rails rspec模型和控制器测试

时间:2012-10-08 19:42:42

标签: ruby-on-rails testing rspec

我只是想知道我是否以适当的方式进行测试。

模型测试应该不用嘲笑,例如:

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')

但是我没有看到这样的测试感,因为我没有测试保存方法。

1 个答案:

答案 0 :(得分:1)

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

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

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