2012-10-08 290 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方法,你不需要在控制器中再次測試它,所有你需要知道的就是它的調用。

本質上,您需要測試控制器的行爲,而不是模型如何反應。