rspec的单行程序更改语法

rspec的单行程序更改语法,rspec,Rspec,当我尝试为rspec的change方法编写一个oneliner时,出现以下错误: 预期结果已更改为nil,但未提供块 这是我的语法: it { is_expected.to change(user.name).to nil } 什么是正确的语法?单行语法在这里没有意义。它用于检查对象的属性或方法返回值 但在这里,您要求检查属性是否更改为nil,这意味着您正在执行导致状态更改的某些操作,并且之前的值不是nil 只有一行不能指定该操作。正确的语法是 it "description" do ex

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

预期结果已更改为nil,但未提供块

这是我的语法:

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

什么是正确的语法?

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

但在这里,您要求检查属性是否更改为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
见:


它指的是subject,而subject是改变值的
对象方法。这真的没有语法吗?