rspec的单线程更改语法

时间:2016-07-01 15:34:54

标签: rspec

当我尝试为rspec的更改方法编写oneliner时,我收到此错误:

  

预期结果已变为零,但没有给出阻止

这是我的语法:

it { is_expected.to change(user.name).to nil }

什么是正确的语法?

1 个答案:

答案 0 :(得分:1)

单行语法在这里没有意义。它用于检查对象的属性或方法返回值。

但是在这里你要求检查一个属性是否改为nil,这意味着你正在执行一些导致状态改变的动作,并且在值不是nil之前。

使用单行,您无法指定该操作。正确的语法是

it "description" do
  expect { "some method call here" }.to change { user.name }.to ...
end

但是,更改通常用于跟踪基于计数器的值的更改。在这里,你真的不需要它。

it "description" do
  # here add the method you want to test
  subject.do_something
  expect(subject.name).to be_nil
end

请参阅: