2010-06-04 2 views
8

Sto scrivendo un test di integrazione per un'applicazione rails usando webrat. Dopo aver compilato un modulo, l'utente preme invia e viene creato un account.Webrat e Rails: l'utilizzo di assert_contain dopo click_button mi dà "Stai per essere reindirizzato"

click_button "Submit" 
assert_contain "Your Account Has Been Created" 

Tuttavia, il test ha esito negativo:

expected the following element's content to include "Your Account Has Been Created": 
You are being redirected. 
<false> is not true. 

Normalmente a seguire un reindirizzamento userei post_via_redirect, ma da solo guardando gli esempi di Webrat, click_button seguito da assert_contain dovrebbe funzionare

ho appena iniziato a usare Webrat, quindi mi manca qualcosa di ovvio qui? Perché sono bloccato con la risposta di reindirizzamento?

Grazie!

Deb

risposta

11

Con una nuova app Rails 3, ho anche avuto questo problema testando un metodo semplice che includeva un reindirizzamento_per chiamare nel controller. Il metodo in sé funzionava bene, ma Webrat avrebbe restituito "Sei reindirizzato". risposta.

Aggiungendo un passaggio "Mostrami la pagina" in cetriolo (in modo che la pagina visualizzata da webrat si apra nel browser) ha mostrato la risposta "Sei reindirizzato." Con un collegamento a un collegamento example.org

sulla base di questo ho scoperto la patch di Yannimac (http://groups.google.com/group/webrat/browse_thread/thread/fb5ff3fccd97f3df):.

#/lib/webrat/core/session.rb 
#starting at line 288 

def current_host 
- URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com" 
+ URI.parse(current_url).host || @custom_headers["Host"] || default_current_host 
end 

+ def default_current_host 
+ adapter.class==Webrat::RackAdapter ? "example.org" : "www.example.com" 
+ end 

Fare questi cambiamenti risolto il problema, in modo da redirect_to chiamate con Webrat ora funzionano correttamente

+0

cerotto funziona perfettamente –

+2

si può anche usare '' follow_redirect – Rob

+0

C'è un problema con questo ... la sua non proprio al 100% non cattura 'redirect_to: back' – Rob

0

Hai qualche autenticazione nelle tue app? Presumo che il reindirizzamento sia dovuto al fatto che non sei stato autenticato. Se la mia ipotesi è giusta, scrivi una configurazione per accedere prima con Webrat.

Problemi correlati