rspec 的单行更改语法

Jwa*_*622 5 rspec

当我尝试为 rspec 的更改方法编写 oneliner 时,出现以下错误:

预期结果已更改为 nil,但未给出块

这是我的语法:

it { is_expected.to change(user.name).to nil }
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

Sim*_*tti 3

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

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

对于一行,您无法指定该操作。正确的语法是

it "description" do
  expect { "some method call here" }.to change { user.name }.to ...
end
Run Code Online (Sandbox Code Playgroud)

然而,变化通常用于跟踪基于计数器的值的变化。在这里你并不真正需要它。

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

看: