新的 Rspec 3 存根模型方式(Rails 4.2/Rspec 3.1)



在一个 Rspec 测试(工作正常)上,我有一个弃用警告

不推荐使用 rspec-mocks 旧:should语法中的stub而不显式启用语法。改用新的:expect语法或显式启用:should

我应该如何更改此测试以符合 Rspec 3?

正在测试字段公司名称是否存在/不为空,然后我必须验证公司电话号码字段是否存在。我曾经使用"存根",但它无法正常工作,我想转向新的 Rspec 3 方式。

/

spec/models/company_spec.rb

describe "test on company name" do
  context "test" do
    before { subject.stub(:company_name?) { true } }
    it { is_expected.to validate_presence_of(:company_phone_number) }
  end 
end

要在 RSpec 3 下存根方法,请使用 allow/receive

allow(subject).to receive(:company_name?).and_return(true)

如果要设置一个在从不调用 company_name? 时将失败的期望:

expect(subject).to receive(:company_name?).and_return(true)

可能是这样的:

describe "test on company name" do
  context "test" do
    before { allow(subject).to receive(:company_name?).and_return(true) }
    ...
  end 
end

最新更新