我正在使用RSpec和rspec-mocks对某些对象进行模拟。 我发现的是下面的内容。
在规格文件中
describe 'foo' do
before do
Mock.start
end
end
在模拟文件中
module Mock
def self.start
SomeClass.stub_chain(:foo).and_return(Mock.mock_create)
end
def self.mock_create
return json
end
end
但是,如果我使用stub_chain
,则会发生以下弃用警告。
Using `stub_chain` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead.
您是否有解决此警告的想法?
allow
方法看起来没用,因为我想像Object.something_instead_of_stub_chain(:create).and_return(Mock.mock_create)
这样的代码。
答案 0 :(得分:1)
新方法是
expect(SomeClass).to receive_message_chain(:foo, :bar, :baz).and_return(something_here)
# or if not a chain
expect(SomeClass).to receive(:foo).and_return(something_here)
您可以使用expect
代替allow
。如果根本不调用该方法,则这些操作不会失败,但是在调用时将返回指定的值。