Тестовый вызов RSpec для модели ActiveMailer - PullRequest
2 голосов
/ 24 февраля 2011

Привет всем, я пытаюсь заставить Rspec проверить, вызывает ли действие определенный метод в моей модели, которая наследуется от ActiveMailer, но мне не повезло.В качестве быстрого макета у меня есть следующий сценарий.Модель UserNotifier:

class UserNotifier < ActionMailer::Base  
  def foobaz
  end
end

Контроллер Пароль Контроллер:

class PasswordsController < ApplicationController

def foobar
  UserNotifier.foobaz
end

И спецификации:

 describe "GET 'foobar'" do

   it "should call the UserNotifier foobaz method" do
     UserNotifier.should_receive(:foobaz)
     get :foobar
   end
 end

, но я всегда в конечном итоге с этой ошибкой:

1) PasswordsController GET 'foobar' should call the UserNotifier foobaz method
 Failure/Error: UserNotifier.should_receive(:foobaz)
   (<UserNotifier (class)>).foobaz(any args)
       expected: 1 time
       received: 0 times

Может кто-нибудь объяснить мне, почему RSpec не регистрирует, что вызывается метод UserNotifier.foobaz?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

У меня точно такая же проблема, но это не из-за каких-либо фильтров (не использующих). Единственное отличие состоит в том, что я вызываю действие на ApplicationController, хотя я не понимаю, почему это будет иметь значение. Метод foobaz определенно вызывается, учитывая, что запуск rspec включает вывод, который я вставляю туда, но Rspec не видит вызов. Есть еще идеи, что может быть не так?

0 голосов
/ 26 февраля 2011

Ответил в комментариях Райан Бигг. В конечном итоге это был before_filter, из-за которого метод никогда не запускался

...