2012-10-08 231 views
0

我只是想知道如果我以正确的方式延长测试。rails 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 

总结:控制器测试没有任何真实的数据。所有的数据都是由stub和mock“提供”的,而模型层则是在db ...上运行的。

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

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

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

回答

1

作为一般的经验法则,我是如何去做的。

使用你的例子,如果你已经在你的模型规范中测试了save方法,你不需要在控制器中再次测试它,所有你需要知道的就是它的调用。

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