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

nvelit 发布于 2019-06-12 rspec 最后更新 2019-06-12 21:16 1 浏览

在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。
已邀请:

snihil

赞同来自:

您的期望设置为在User的任何实例上存根方法,而不是您在User上定义的类方法。 为此,您只需将User作为参数传递给expect,而不是实例。喜欢这个:

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