Domanda

Ho avuto problemi con il test di autenticazione di mia applicazione Grails. Sembra che il browser non accetta i cookie, così ho creato una semplice applicazione graal come un test.

<html>
<head>
    <title>Welcome to Grails</title>
</head>
<body>
    <g:each in="${request.cookies}">
       <h1>${it.name} = <span class="value">${it.value}</span></h1>
    </g:each>

    <span class="value">test test</span>
</body>

e la mia prova di Geb:

import spock.lang.Stepwise;
import geb.Page;
import geb.spock.GebReportingSpec


@Stepwise
class LoginSmokeTests extends GebReportingSpec {
 String getBaseUrl() {
  return "http://localhost:8080/test123/"
 } 

 def "testing stuff"() {
  given:
   to HomePage
  when:
   println header

  then: 
   at HomePage
 }  
}



class HomePage extends Page {
 static at = { title == "Welcome to Grails" }

 static content = {
  header { $("span.value").first().text() }
 }
}

Quando osservo questo attraverso il browser, i valori 2 biscotti vengono stampati. Quando si accede tramite la mia prova Geb, il codice HTML <span class="value">test test</span> viene prelevato - come non ci sono i biscotti nella richiesta per iterare su.

Ho fatto qualche ricerca su come utilizzare Geb + cookie, ma in quanto è relativamente nuovo software, non sembra essere troppo informazioni là fuori (anche se il suo manuale è grande).

  

Una nuova istanza del browser viene creato per ogni metodo di prova Tuttavia, dato che il comportamento di default è di riutilizzare il driver predefinito tra le istanze del browser cookie del conducente vengono cancellati nel metodo Spock cleanup (). Tuttavia, se la specifica è graduale (cioè è annotato con @ spock.lang.Stepwise - vedi documentazione Spock per i dettagli) i cookies non vengono cancellati in cleanup (), ma vengono cancellati in cleanupSpec () il che significa che lo stato del browser non viene ripristinato tra di prova metodi (che ha un senso per una specifica graduale).

E, sto solo eseguendo un metodo di prova - ma nessun cookie vengono inviati. Tutte le idee?

È stato utile?

Soluzione

Perché questa è la tua prima richiesta, il browser non ha i cookie perché il server non ha inviato alcuna.

Se fate una richiesta successiva si dovrebbe vedere i cookie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top