2009-09-07 12 views
6

vorspiegelt/stibitzt Das Szenario ist wie folgt. Mein Bestellmodell hat ein after_create, das mit einem Remote-Zahlungsgateway Kontakt aufnimmt, um eine Zahlungs-URL abzurufen. In meinen Gurkentests möchte ich diese Aktion nicht durchführen, sondern eine beliebige URL zurückgeben. Meine aktuellen Gurken Tests sieht wie folgt aus:Wie man ein Modell in den Gurkentests

Da gibt es ein Produkt „Produkt X“ Wenn ich geben mein Beglaubigungs Und ich auf „Jetzt bestellen“ Dann sollte ich auf „willkürliche url“

weitergeleitet Das Problem ist, wo/wie stelle ich sicher, dass mein Bestellmodell die URL richtig setzt und nicht den Remote-Payment-Gateway kontaktiert?

Antwort

3

In Features/support/env.rb Ich monkey-patched mein Order-Modell, um die beliebige URL einzustellen. Dies könnte mit Mocha oder etwas anderem geschehen, aber in diesem Fall gibt es keinen Sinn.

In meinen Schritten kann ich die Antwort für die korrekte Weiterleitung wie folgt überprüfen:

Then /^I should be redirected to the payment gateway$/ do 
    response.status.should eql("302 Found") 
    response.location.should eql(Order.last.payment_url) 
end 

Hoffnung dies auch für die anderen hilft. Ich würde immer noch gerne wissen, ob es einen besseren/saubereren Weg gibt, dieses Ziel zu erreichen.

1

Wenn ich verstehe, was Sie versuchen, richtig zu machen, werfen Sie einen Blick auf FakeWeb.

11

Das Wiki hat auch einige tips on stubbing.

+0

[Aktualisierter Link] (https://github.com/cucumber/cucumber/wiki/mocking-and-stubbing-with-cucumber) – Jared

Verwandte Themen