2010-05-26 13 views
7

Ich entwickle eine Rails App, und ich habe gerade mit meinem Kollegen gesprochen, dass wir eine Mischung aus Fixtures und Mocks in unseren Tests haben, die wir mit Gurke und Rspec machen. Die Frage wäre: Wann sollte jeder benutzt werden?Rails Fixtures vs. Mocks

+1

Art von Off-Thema, aber eine wirklich nette Alternative zu den Geräten ist factory_girl (kann Seite an Seite mit Fixtures auch verwendet werden) http://github.com/thoughtbot/factory_girl#readme und hier ist eine Railscast über Nutzung http://railscasts.com/episodes/158-factories-not-fixtures – house9

Antwort

14

Ich würde ein Mock-Objekt verwenden, wenn die Verwendung des realen Objekts nicht praktikabel/nicht notwendig ist. Nehmen wir zum Beispiel an, dass Sie eine entfernte API wie einen Adressfinder über die Postleitzahl anrufen müssen. Sie möchten das Objekt wahrscheinlich überspotten, damit die Aufrufe nicht jedes Mal ausgeführt werden, wenn Sie Ihre Tests ausführen. Es gibt auch andere Gründe, wie die Geschwindigkeit zu verbessern, nach Daten zu fragen, die sich ändern, wo Sie eine genaue Antwort benötigen, oder vielleicht gibt es sie noch nicht. Es ermöglicht Ihnen, Dinge isoliert zu testen, da Sie feststellen können, dass Sie diese Methoden zurückbekommen, wenn Sie diese Methoden für dieses Mock-Objekt aufrufen. Sie müssen den Code nicht wirklich ausführen, da dieser Test nicht wichtig ist.

Wenn Sie Fixtures verwenden, haben Sie ein reales Objekt und die Methoden usw. werden aufgerufen und ihr Code wird ausgeführt, es sei denn natürlich, Sie stub die Methoden aus, was für eine andere Frage ist.

Hoffe, dass hilft ein wenig. Es gibt einen guten Peepcode (http://peepcode.com/products/rspec-mocks-and-models) auf Spott und Stubbing, vielleicht überprüfen Sie es.

+0

danke. Du hast es sehr deutlich erklärt. – Anand