Ruby on rails 测试一个类级方法是否更改另一个类的属性
在Ruby应用程序中,我有一个类(Resque Job),它的方法在使用另一个类的id调用时会影响另一个类的值Ruby on rails 测试一个类级方法是否更改另一个类的属性,ruby-on-rails,ruby,rspec,factory-bot,Ruby On Rails,Ruby,Rspec,Factory Bot,在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(:
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在let中创建“obj”,但仍然不起作用。我已经在ResqueKlass perform方法中放置了绑定,并且可以看到该值正在更新
PS请记住我是Ruby和rspec的新手。这些不是我正在使用的确切类,原因是实际类包含一些敏感数据。发生这种情况,因为您没有重新加载该记录,因此您的obj仍然显示旧版本 尝试使用
obj重新加载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