2015-07-02 30 views
0

我一直在努力尝试一段时间的变更测试。我得到了这个测试:RSpec“变更”无法找到差异

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没有捕获它们。我究竟做错了什么?我一直使用括号符号也没有成功。我很确定答案很简单,但我解决不了。

在此先感谢!

+2

您可能需要重新加载'office',尝试在修补程序之后和结束之前添加'office.reload'。 –

+0

正如我所说,该死的简单。 :) 谢谢!我非常确定,当我使用rails scaffold示例时,我尝试了这一点。 – roflomglol

+0

你可以写一个答案,我会标记为有用的。 – roflomglol

回答

0

您需要重新加载office,在patch后添加office.reloadend之前,这是使你的对象注意到在数据库中的变化,并得到更新。