好的,所以我一直在寻找几天来修复这个错误,但我似乎无法找到答案。我正在尝试使用 rspec 测试我的 rails 应用程序,并且现在专门进行控制器测试。
在我的控制器中,我有方法
def update
changes = @match_preference.changes
...
if changes.values.collect(&:first).any?(&:nil?)
flash[:notice] = 'Hello'
end
...
end
在我的测试文件中我有这个
before :each do
@match_preference = FactoryGirl.create :match_preference
end
it "should do something on first change" do
# Line I have been changing a lot
@match_preference.changes.values.collect.stubs(:any?).returns(true)
post :update
flash.should_not be_nil
end
我还尝试用 stub_chain 和许多其他可能的答案替换该行。我发现问题出在任何功能上?当我删除该函数时,我可以更改 collect 的返回值并且它总是有效的。为什么不会呢?允许我设置一个返回值吗?
我知道问题不在于@match_preferences,因为我在测试的其他地方使用它并且它有效。
我没有从这段代码中得到任何错误,只是似乎没有正确更改返回值。