嘿大家我试图让Rspec测试一个动作是否在我从ActiveMailer继承但没有运气的模型中调用特定方法。因此,作为快速模型,我有以下场景。 Model 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方法吗?
答案 0 :(得分:0)
Ryan Bigg在评论中回答。结束了导致该方法永不运行的before_filter
答案 1 :(得分:0)
我有完全相同的问题,但这不是由于任何过滤器(不使用任何过滤器)。一个区别是我在ApplicationController上调用一个动作,虽然我不明白为什么这会很重要。鉴于rspec运行包含输出I插入,但是rspec没有看到调用,所以foobaz方法肯定会被调用。对于可能出错的任何其他想法?