-1

我正在使用 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).

4

1 回答 1

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. 如果根本不调用该方法,则不会失败,但会在调用时返回指定的值。

于 2018-07-19T14:19:54.277 回答