当我使用宝石'rspec-mock'的'stub_chain'时,我会收到弃用警告

时间:2018-07-19 12:49:06

标签: rspec ruby-on-rails-5 rspec-mocks

我正在使用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)这样的代码。

1 个答案:

答案 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。如果根本不调用该方法,则这些操作不会失败,但是在调用时将返回指定的值。