测试 class 级别方法是否更改另一个 class 的属性
Test whether a class level method change attribute of another class
在 Ruby 应用程序中,我有一个 class(Resque Job),当使用后者的 ID 调用时,该方法会影响另一个 class 的值 class。
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' 和 let ,但还是不行。我在 ResqueKlass 执行方法中放置了绑定,我可以看到该值正在更新。
PS 请记住,我是 Ruby 和 rspec 的新手。这些并不是我正在使用的确切 classes,原因是实际 classes 包含一些敏感数据。
会发生这种情况,因为您没有重新加载该记录,因此您的 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 应用程序中,我有一个 class(Resque Job),当使用后者的 ID 调用时,该方法会影响另一个 class 的值 class。
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' 和 let ,但还是不行。我在 ResqueKlass 执行方法中放置了绑定,我可以看到该值正在更新。
PS 请记住,我是 Ruby 和 rspec 的新手。这些并不是我正在使用的确切 classes,原因是实际 classes 包含一些敏感数据。
会发生这种情况,因为您没有重新加载该记录,因此您的 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