2012-04-09 39 views
1

這可能更多的是一個哲學問題,但...如何確保我的控制器和型號規格與rspec和rails一致?

由於我正在使用rspec和rails,我越來越習慣於使用模擬對象和存根將我的控制器測試與我的模型隔離,反之亦然。

但是,這給我留下了一種揮之不去的感覺,那就是不是所有東西都連接正確。

舉個例子,我可能有這樣的控制器的規格:

it "passes a list of awesome cheeses to the view" do 
    Cheese.should_receive(:awesome).and_return([ ]) # one method name 
    get 'show' 
    assigns[:awesome_cheeses].should_not be_nil 
end 

,然後就像我的奶酪模型規格:

it "should return a list of awesome cheeses" do 
    Cheese.create!(:name => "American", :is_awesome => false) 
    Cheese.create!(:name => "Gouda", :is_awesome => true) 
    Cheese.awesome_cheeses.should_not be_nil # different method name! 
end 

如果這兩個規格的傳球,我應用程序仍然會被破壞,因爲我在第一個規範中列出的方法與我在第二個規範中確定的方法名稱不同。

現在,對此的一個答案是「您需要集成測試」,但除非我的集成測試超級徹底,否則我可能會錯過這樣的錯誤。

是否有任何自動化的方法來比較我的控制器測試中存在的方法與我在模型測試中實際測試的方法?

+0

[工廠與存根/模擬考試(http://www.ruby-forum.com/topic/215933) [關於嘲弄的想法](http://blog.rubybestpractices.com/posts/gregory/052-issue-20-thoughts-on-mocking.html) – 2012-04-09 20:05:00

+0

@NashBridges,這兩個鏈接似乎都是「不要那樣做「。這不是我正在尋找的答案:) – dpassage 2012-04-09 22:19:03

回答