我只是想知道我是否以正确的方式理解测试。
模型测试应该在没有模拟的情况下完成,例如:
规范
model.name = 'test'
model.save
model.should eq('test')
并且 Controller 应该基于模拟:
规范
model.should_receive(:save).and_return(true)
Bộ điều khiển
def action
...
if model.save
...
end
总结: Controller 是在没有任何真实数据的情况下进行测试的。与在...数据库上运行的模型层相比,所有数据都是由 stub 和模拟“提供”的?
但我认为模型也应该被模拟
model.name = 'test'
model.should_receive(:save)
model.should eq('test')
但我没有看到这样的测试意义,因为我没有测试保存方法。
作为一般经验法则,我就是这样做的。
使用您的示例,如果您已经在模型规范中测试了 save
方法,则无需在 Controller 中再次测试它,您只需要知道它已被调用即可。
本质上,您需要测试 Controller 的行为,而不是模型对其的 react 。
Tôi là một lập trình viên xuất sắc, rất giỏi!