Функциональные веб-тесты Geb + куки - PullRequest
0 голосов
/ 28 сентября 2010

У меня были проблемы с проверкой аутентификации моего приложения Grails. Похоже, что браузер не будет принимать куки, поэтому я создал простое приложение grails в качестве теста.

<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>

и мой тест Геба:

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() }
 }
}

Когда я просматриваю это через браузер, печатаются значения двух файлов cookie. При доступе к нему через мой тест Geb, HTML-код <span class="value">test test</span> выбирается, поскольку в запросе нет файлов cookie для повторения.

Я провел некоторый поиск того, как использовать файлы cookie Geb +, но, поскольку это относительно новое программное обеспечение, кажется, что там не так уж много информации (хотя его руководство великолепно).

Новый экземпляр браузера создается для каждого метода тестирования. Однако по умолчанию используется повторное использование драйвера по умолчанию для всех экземпляров браузера, куки-файлы драйвера очищаются с помощью метода Spock cleanup (). Однако, если ваша спецификация пошаговая (то есть помечена @ spock.lang.Stepwise - подробности см. В документации по Spock), куки не очищаются в cleanup (), а очищаются в cleanupSpec (), что означает, что состояние браузера не сбрасывается между тестами. методы (что имеет смысл для ступенчатой ​​спецификации).

И я выполняю только один тестовый метод, но куки не отправляются. Есть идеи?

1 Ответ

6 голосов
/ 13 декабря 2010

Поскольку это ваш первый запрос, в браузере не будет файлов cookie, поскольку сервер их не отправлял.

Если вы выполните следующий запрос, вы должны увидеть файлы cookie.

...