2010-05-07 4 views
1

Существует хорошая документация по тестированию методов отправки ActionMailer, которые доставляют почту.Тестирование Метод приема ActionMailer (Rails)

Но я не могу понять, как протестировать метод receive, который используется для анализа входящей почты.

Я хочу сделать что-то вроде этого:

require 'test_helper' 
class ReceiverTest < ActionMailer::TestCase 

    test "parse incoming mail" do 
    email = TMail::Mail.parse(File.open("test/fixtures/emails/example1.txt",'r').read) 
    assert_difference "ProcessedMail.count" do 
     Receiver.receive email 
    end 
    end 
end 

Но я получаю следующее сообщение об ошибке на линии, которая вызывает Receiver.receive

NoMethodError: undefined method `index' for #<TMail::Mail:0x102c4a6f0> 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/stringio.rb:128:in `gets' 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/mail.rb:392:in `parse_header' 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/mail.rb:139:in `initialize' 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/stringio.rb:43:in `open' 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/port.rb:340:in `ropen' 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/mail.rb:138:in `initialize' 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/mail.rb:123:in `new' 
/Library/Ruby/Gems/1.8/gems/tmail-1.2.7.1/lib/tmail/mail.rb:123:in `parse' 
/Library/Ruby/Gems/1.8/gems/actionmailer-2.3.4/lib/action_mailer/base.rb:417:in `receive' 

Tmail является разбор тестовый файл я правильно. Вот и все. Благодаря!

ответ

2

Выяснил это. Передавал объект TMail в метод «получать». Вместо этого нужно взять только обычную старую строку (выполняется ли синтаксический анализ в объект TMail).

Смежные вопросы