我只是想知道我是否以适当的方式进行测试。
模型测试应该不用嘲笑,例如:
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')
但是我没有看到这样的测试感,因为我没有测试保存方法。
答案 0 :(得分:1)
作为一般的经验法则,我就是这样做的。
使用您的示例,如果您在模型规范中测试了save
方法,则无需在控制器中再次测试它,您需要知道的是它被调用。
基本上你需要测试控制器的行为,而不是模型对它的反应。