0

我只是想知道我是否以正确的方式理解测试。

模型测试应该在没有模拟的情况下完成,例如:

rspec

model.name = 'test'
model.save
model.should eq('test')

并且控制器应该基于模拟:

rspec

model.should_receive(:save).and_return(true)

控制器

def action
...
if model.save
...
end

总结:控制器在没有任何真实数据的情况下进行测试。与在 ... db 上运行的模型层相比,所有数据都是由存根和模拟“提供”的?

但我认为该模型也应该被嘲笑

model.name = 'test'
model.should_receive(:save)
model.should eq('test')

但我看不到这样的测试意义,因为我没有测试保存方法。

4

1 回答 1

1

作为一般经验法则,我就是这样做的。

使用您的示例,如果您已经save在模型规范中测试了该方法,则无需在控制器中再次测试它,您只需要知道它已被调用。

本质上,您需要测试控制器的行为,而不是模型对它的反应。

于 2012-10-09T12:49:21.290 回答