2012-04-09 3 views
1

Das ist vielleicht eher eine philosophische Frage, aber ...Wie stelle ich sicher, dass meine Controller- und Modellspezifikationen mit rspec und rails übereinstimmen?

Als ich mit rspec und Schienen gerade arbeite, ich bin bequemer mit der Verwendung von Mock-Objekten und Stubs immer zu meinen Controller Tests von meinen Modellen zu isolieren, und umgekehrt.

Aber das hinterlässt mich mit einem anhaltenden Gefühl, dass nicht alles richtig verbunden ist.

Als Beispiel könnte ich eine Spezifikation für einen Controller wie dieses:

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 

Und dann ein spec auf meinem Käse Modell wie:

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 

Wenn beide diese Spezifikationen passieren, mein App wird immer noch kaputt sein, weil die Methode, die ich in der ersten Spezifikation ausstelle, nicht den gleichen Namen hat wie der, den ich in der Sekunde verarbeite.

Jetzt lautet die Antwort: "Sie brauchen Integrationstests", aber wenn meine Integrationstests nicht sehr gründlich sind, kann mir ein Fehler wie dieser fehlen.

Gibt es einen automatisierten Weg, um die Methoden zu vergleichen, die ich in meinen Controller-Tests erwarte, mit den Methoden, die ich tatsächlich in meinen Modelltests getestet habe?

+0

[Fabriken vs. Stubs/Mocks] (http://www.ruby-forum.com/topic/215933), [Gedanken auf Mocking] (http://blog.rubybestpractices.com/posts/gregory/052-issue-20-thoughts-on-mocking.html) –

+0

@NashBridges, beide Links scheinen Variationen zum Thema " Tu das nicht ". Das ist nicht wirklich die Antwort, die ich suche :) – dpassage

Antwort

Verwandte Themen