如果我有模特
module MyModule
def bar(str)
puts str
end
end
MyModel < ActiveRecord::Base
include MyModule
bar('foo')
end
我的规格:
describe MyModel do
before do
described_class.stubs(:bar)
end
it 'calls bar with correct arguments' do
# This does not work because it is called before it gets stubbed
expect(described_class).to have_received(:bar).with('foo')
end
end
从MyModule#bar
呼叫时如何监视MyModel
?
使用rspec-rails 2.99和mocha 0.13.3
答案 0 :(得分:1)
如果您在其他地方调用MyModel.new.bar,则可以在测试中编写
followupEventInput
如果要使用“间谍”,可以使用:
expect_any_instance_of(MyModel).to receive(:bar)
如果您在测试中具有指向MyModel实例的链接,则可以通过以下方式重写上述示例:
allow_any_instance_of(MyModel).to receive(:bar)
或
expect(my_model_instance).to receive(:bar)
您应该了解,在您的类中包含任何模块之后,该类的实例将成为该方法的接收者。