Rspec:在控制器测试中仍然调用存根模型方法

时间:2014-11-19 17:15:08

标签: ruby-on-rails rspec

在Rails中有这个模型:

class User < ActiveRecord::Base
  def self.create_auth_from_hash(hash)
    # stuff
  end
end

我想存根create_from_auth_hash方法,以便隔离控制器行为。显然,目前的语法是:

expect_any_instance_of(User).to receive(:create_from_auth_hash).and_return(false)

但即使我没有错误,仍然会调用模型方法。

如何存根模型方法?我正在使用Rails 4.1和RSpec 3.0。

1 个答案:

答案 0 :(得分:1)

您的期望设置为在User的任何实例上存根方法,而不是您在User上定义的类方法。

为此,您只需将User作为参数传递给expect,而不是实例。像这样:

expect(User).to receive(:create_from_auth_hash).and_return(false)