gpt4 book ai didi

ruby-on-rails - 测试类级别方法是否更改另一个类的属性

转载 作者:数据小太阳 更新时间:2023-10-29 09:01:34 26 4
gpt4 key购买 nike

在 Ruby 应用程序中,我有一个类(Resque Job),它的方法在使用后一个类的 ID 调用时会影响另一个类的值。

class ResqueKlass 
def self.perform(id)
obj = EditKlass.find(id)
obj.update(value: 0)
end
end

我想使用 rspec 来测试这个值是否确实在方法中被改变了

describe 'Something' do
let(:obj){FactoryGirl.create(:editklass)}

scenario 'Change obj value' do
ResqueKlass.perform(obj.id)
expect(obj.value).to eq(0)
end
end

此测试在预期为 0 的地方失败,它获得了工厂女孩中设置的值。

我也试过不使用 factory girl create 'obj' with let 但这仍然不起作用。我在 ResqueKlass 执行方法中放置了绑定(bind),我可以看到该值正在更新。

PS 请记住,我是 Ruby 和 rspec 的新手。这些不是我正在使用的确切类,原因是实际类包含一些敏感数据。

最佳答案

会发生这种情况,因为您没有重新加载该记录,因此您的 obj 仍然显示旧版本。

尝试使用 obj.reload 重新加载 obj:

describe 'Something' do
let(:obj){FactoryGirl.create(:editklass)}

scenario 'Change obj value' do
ResqueKlass.perform(obj.id)
expect(obj.reload.value).to eq(0)
end
end

关于ruby-on-rails - 测试类级别方法是否更改另一个类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com