6

Ho un comportamento generale dell'applicazione che cambia in base al contenuto dei cookie e devo verificarlo. Ad esempio, se un utente non dispone di un set di cookie che indica di aver accettato i termini legali del sito, è necessario reindirizzare la pagina T & C.Come si imposta un cookie per un test di integrazione in Rails?

posso impostare un cookie in un test funzionale utilizzando

request.cookies["legal_accepted"] = "yes" 

Tuttavia, questo non funzionerà in un'integrazione test- non c'è oggetto di richiesta con cui lavorare. Non sono riuscito a trovare alcuna documentazione sul perché sia ​​così, cos'altro è diverso e sulle migliori pratiche per lavorare con la differenza. Come posso impostare un cookie per una determinata richiesta? Il perché e perché è documentato ovunque?

risposta

5

L'unico modo in cui ho trovato di farlo è impostare manualmente l'intestazione del cookie nella richiesta, ad es.

get "/", {}, { "HTTP_COOKIE" => "legal_accepted=yes; cookie2=value2; "} 
2

In Rails 3.2.x (certamente in 3.2.16) è possibile assegnare i biscotti direttamente in un test di integrazione:

cookies['foo'] = 'bar' 

È ora possibile accedere al cookie 'foo' nel test e applicazione:

puts cookies['foo'] (returns 'bar') 
+0

Quale framework di test state usando? Non ho potuto farlo funzionare. – dylankb

0

Se si desidera utilizzare Poltergeist ci sono alcuni metodi per handeling cookie che ho usato nel test di integrazione.

https://github.com/teampoltergeist/poltergeist#manipulating-cookies

Una cosa da notare è che se si desidera aggiornare un cookie, dovrete rimuovere il cookie, poi imposta.

page.driver.remove_cookie("cookie_name") 
page.driver.set_cookie("cookie_name", "some_value") 
Problemi correlati