2009-09-07 15 views
6

Lo scenario è il seguente. Il modello Ordine personale ha un after_create che contatta un gateway di pagamento remoto per recuperare un URL di pagamento. Nei miei test Cucumber non voglio eseguire questa azione, ma restituire un URL arbitrario. I miei attuali test di cetriolo aspetto:Come simulare/stubare un modello nei test di Cetriolo

Dato c'è un prodotto "prodotto X" Quando entro le mie credenziali E faccio clic su "Order Now" Poi mi possa essere reindirizzata a "URL arbitrari"

Il problema è dove/come faccio ad accertarmi che il mio modello di ordine imposti correttamente l'url e non contatti il ​​gateway di pagamento remoto?

risposta

3

In features/support/env.rb ho applicato il patch al modello Ordine per impostare l'URL arbitrario. Questo potrebbe essere fatto anche con Mocha o qualcos'altro, ma in questo caso non è il caso.

Nei miei passi è possibile controllare la risposta per il reindirizzamento corretto in questo modo:

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 

Spero che questo aiuti anche per gli altri. Mi piacerebbe ancora sapere se c'è un modo migliore/più pulito per raggiungere questo obiettivo.

1

Se ho capito cosa stai cercando di fare correttamente, dai un'occhiata a FakeWeb.

11

Il wiki ha anche tips on stubbing.

+0

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

Problemi correlati