RSpec 'change' 看不出区别

RSpec 'change' can't spot a difference

我已经为变更测试苦苦挣扎了一段时间。我得到了这个测试:

let(:office)   { create(:office) }

...

it "toggles products free attribute", :focus do
  expect do
    patch :toggle_free, product_ids: [office.id]
  end.to change(office, :free).to(1)
end

我确切地知道代码有效。我在它之前和之后在控制台中打印#free,但#change 没有捕捉到它们。我究竟做错了什么?我也一直在使用括号表示法但没有成功。我很确定答案很简单,但我无法解决它。

提前致谢!

您需要重新加载 office,在 patch 之后和 end 之前添加一个 office.reload,以便您的对象注意到数据库中的更改并得到更新。