2012-10-31 20 views
5

Wir haben ein isoliertes Testautomatisierungsteam, das für die Automatisierung nur watir + Gurkenfunktionaler Testfälle verantwortlich ist. Ihre Code-Basis ist nicht mit der Rails-App verbunden, an der andere Entwickler arbeiten, sondern getrennt bleiben. Wir haben bis jetzt mehrere Testfälle automatisiert, und nun haben wir einige (watir/gurke specs) Testfälle, die erfordern, dass einige Daten in db vorexistieren, so dass sie sich nur auf das Problem konzentrieren sollten, und nicht Erstellen von Daten benötigt selbst.Datenfabrik für Gurke, watir

Beispiel, wenn es überprüft werden muss, ob die Bewertung für einen Beitrag funktioniert, erfordert es, dass ein Postobjekt vorexistieren sollte, und es prüft nur die Bewertung. Und nicht das erste Post-Objekt erstellen und dann seine Bewertung überprüfen.

Was sind die besten Ansätze hier? Wie haben wir Armaturen und Fabrik-Mädchen für Schienen Unit Testing, was gibt es für Gurken-Spezifikationen? Oder sollen wir Features nur hier nutzen? Diese Tester haben möglicherweise keine Vorstellung von allen existierenden Modellen, sind sich dessen bewusst, um Fixtures über die Rails-Model-Schnittstelle nutzen zu können.

Meine Idee war, wenn wir Feature-Datei schreiben, sollte es nicht zeigen oder sprechen über jedes Modell, das Meta-Zeug aussieht. Watir/Specs-Testfälle sollten sich nur der "Web-Anwendung"/des Browsers bewusst sein, nur als die Schnittstelle, um mit der Anwendung zu sprechen/zu handeln. Sie sollten keine andere Schnittstelle (Fixture/Models) kennen. Daher sollten sie ihre eigenen Daten selbst erstellen, indem sie die einzige Schnittstelle verwenden, die sie kennen.

Noch einmal, was ich wissen will, gibt es Ruby lib/code, gegeben Tabellennamen, Spaltennamen und Werte (alle wie Fixtures yml), zusammen mit db-Parameter. Es wird einfach in db eingefügt, ohne Kontext der Schienenumgebung. Und so haben Tester, deren Umgebung von den Schienen isoliert ist, Webentwickler, die alleine arbeiten könnten. Rails Armaturen oder Fabrik Mädchen scheinen gut mit Schienen gekoppelt zu sein. Oder bin ich falsch?

+0

Aber wer sagt, dass Factory Girl nur für rspec ist? Es funktioniert auch mit cucs. http://collectiveidea.com/blog/archives/2010/09/09/practical-cucumber-factory-girl-steps/ – Chirantan

Antwort

1

Wie Chirranan sagte, Sie könnten Fabrik Mädchen mit Gurke verwenden. Wenn Ihre Fabriken in der Testeinheit oder in der RSpec erforderlich sind, können Sie dies auch in der Datei env.rb der Gurke oder in einer benutzerdefinierten Konfigurationsdatei tun.

http://robots.thoughtbot.com/post/284805810/gimme-three-steps

http://www.claytonlz.com/2010/03/zero-to-tested-with-cucumber-and-factory-girl/

http://www.andhapp.com/blog/2009/11/07/using-factory_girl-with-cucumber/

+0

wenn ich Factory-Mädchen verwenden kann, warum nicht Fixtures? Recht? –

+1

Ja, Sie können auch Geräte verwenden. – hindenbug

-1

Wenn Gurken verwenden, setzt das Vorliegende Anweisung, um die Testsituation auf:

Given I have a basic user with a password 

und die Wenn-Anweisung löst den Test:

und die Then-Anweisung überprüft die Testergebnisse

Then they see the basic menu 

Die Daten in der gegebenen Anweisung geladen werden.

+0

Es bereitet die Umgebung vor dem Test vor. Wenn ich 7 Fuß groß bin, sollte ich, wenn ich durch die Tür gehe, meinen Kopf stoßen. Das gegeben macht mich 7 Fuß groß, bevor der Test beginnt. Das Wann muss durch die Tür gehen. Der stellt dann sicher, dass ich meinen Kopf stoße. Ich könnte den Test nicht machen, wenn ich nicht 7 Fuß groß wäre.Idealerweise wäre dies ein Aufruf an die Datenbank, um den Benutzer zu veranlassen, 7 Fuß hoch zu sein. Oft wird die Einrichtung als Testvoraussetzung bezeichnet. Bei rspec ist es normalerweise ein Vorher: jedes oder vorher: alles. Im Test: Einheit ist es ein Setup(). –