11 Stimmen

Wie beginne ich am besten mit dem Unit- und Funktionstest einer Ruby Rails-Website?

Ich teste eine Ruby Rails-Website und wollte mit Unit- und Funktionstests beginnen.

6voto

Sam Stokes Punkte 14381

Gurke y RSpec sind einen Blick wert. Sie fördern das Testen in einem verhaltensorientiert , beispielhafter Stil.

RSpec ist eine Bibliothek für Tests auf Unit-Ebene:

describe "hello_world"
  it "should say hello to the world" do
    # RSpec comes with its own mock-object framework built in,
    # though it lets you use others if you prefer
    world = mock("World", :population => 6e9)
    world.should_receive(:hello)
    hello_world(world)
  end
end

Es bietet spezielle Unterstützung für Rails (z.B. kann es Modelle, Views und Controller isoliert testen) und kann die in Rails eingebauten Testmechanismen ersetzen.

Mit Cucumber (früher bekannt als RSpec Story Runner) können Sie High-Level-Akzeptanztests in (relativ) einfachem Englisch schreiben, die Sie einem Kunden zeigen (und mit ihm abstimmen) können, und sie dann ausführen:

Story: Commenting on articles

  As a visitor to the blog
  I want to post comments on articles
  So that I can have my 15 minutes of fame

  Scenario: Post a new comment

    Given I am viewing an article
    When I add a comment "Me too!"
    And I fill in the CAPTCHA correctly
    Then I should see a comment "Me too!"

4voto

Orion Edwards Punkte 117361

Meine Empfehlung ist (ernsthaft) nur Bypass der eingebauten Schienen Einheit / funktionale Prüfung Zeug, und gehen Sie direkt für RSpec .

Die eingebauten Schienen verwenden die Test::Unit Framework, das mit Ruby ausgeliefert wird, und das mehr oder weniger eine direkte Portierung von JUnit/NUnit/AnyOtherUnit ist.
Ich fand diese Frameworks alle ziemlich mühsam und ärgerlich, was zu einer allgemeinen Apathie über das Schreiben von Unit-Tests, die offensichtlich nicht das ist, was Sie versuchen, hier zu erreichen.

RSpec ist ein anderes Tier, das sich darauf konzentriert, zu beschreiben, was Ihr Code sollte tun, anstatt zu behaupten, was sie tut bereits . Es wird Ihre Sichtweise auf das Testen verändern, und Sie werden viel mehr Spaß dabei haben.

Wenn ich mich wie ein Fanboy anhöre, dann nur, weil ich wirklich glaube, dass RSpec so gut ist. Ich ging von genervt und müde von Einheit / Funktionstests, zu einem überzeugten Gläubigen in es, so ziemlich nur wegen rspec.

4voto

Dave Nolan Punkte 2969

Es hört sich so an, als hätten Sie Ihre Bewerbung bereits geschrieben, daher bin ich mir nicht sicher, ob Sie einen großen Vorteil davon haben, wenn Sie RSpec über Test::Unit .

Unabhängig davon, wofür Sie sich entscheiden, werden Sie schnell auf ein anderes Problem stoßen: die Verwaltung von Fixtures und Mocks (d. h. Ihrer Test-"Daten"). Werfen Sie also einen Blick auf Sollte y Fabrikmädchen .

1voto

danivovich Punkte 4177

Sie können die Weboberfläche auch mit einem Firefox-Plugin testen, z. B. http://selenium.openqa.org/

Es zeichnet Klicks und Texteingaben auf, gibt sie wieder und prüft die Seite auf die richtigen Anzeigeelemente.

0voto

Aaron Punkte 84

Selbst wenn die Anwendung bereits geschrieben ist, würde ich die Verwendung von RSpec gegenüber Test::Unit aus dem einfachen Grund empfehlen, dass keine Anwendung jemals fertig ist. Sie werden immer wieder neue Funktionen hinzufügen und den Code umgestalten wollen. Die richtige Testgewohnheit zu einem frühen Zeitpunkt wird dazu beitragen, dass diese Änderungen weniger schmerzhaft sind

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X