如何在控制器中获取模型的存根?
示例:
# Model Spec
it 'does something' do
allow(model).to receive(:value).and_return 100
model2 = FactoryGirl.create :model
allow(model2).to receive(:value).and_return 99
# next line fails because it returns 100. when fetched, model2.value = 0
expect(model.subtract_last_model).to eq 1
end
# Model
def subtract_last_model
value - Model.last.value
end我需要能够存根model2,又名Model.last来返回99。
当然,我可以编写以下代码,然后编写一个规范,看看是否用正确的参数调用了它,但我很好奇是否还有其他方法:
def subtract_model(model)
value - model.value
end发布于 2014-06-22 03:00:34
很简单,只是存根Model和model2
it 'does something' do
allow(model).to receive(:value).and_return 100
model2 = FactoryGirl.create :model
# stub Model
allow(Model).to receive(:last).and_return model2
allow(model2).to receive(:value).and_return 99
# next line fails because it returns 100. when fetched, model2.value = 0
expect(model.subtract_last_model).to eq 1
end发布于 2014-06-22 03:00:27
Model.last不返回带存根的model2,而是从数据库重新加载model2的非存根版本。因此:
it 'does something' do
allow(model).to receive(:value).and_return 100
model2 = FactoryGirl.create :model
allow(model2).to receive(:value).and_return 99
allow(Model).to receive(:last).and_return(model2)
expect(model.subtract_last_model).to eq 1
endhttps://stackoverflow.com/questions/24347731
复制相似问题