RSpec测试调用ActiveMailer模型

时间:2011-02-23 22:47:39

标签: ruby-on-rails ruby-on-rails-3 testing tdd rspec

嘿大家我试图让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方法吗?

2 个答案:

答案 0 :(得分:0)

Ryan Bigg在评论中回答。结束了导致该方法永不运行的before_filter

答案 1 :(得分:0)

我有完全相同的问题,但这不是由于任何过滤器(不使用任何过滤器)。一个区别是我在ApplicationController上调用一个动作,虽然我不明白为什么这会很重要。鉴于rspec运行包含输出I插入,但是rspec没有看到调用,所以foobaz方法肯定会被调用。对于可能出错的任何其他想法?