Функциональные веб-тесты Geb + файлы cookie

У меня возникли проблемы с проверкой аутентификации моего приложения Grails. Похоже, что браузер не принимает файлы cookie, поэтому я создал простое приложение 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>

and my Geb test:

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

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

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

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

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


person Steven Sproat    schedule 28.09.2010    source источник


Ответы (1)


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

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

person Luke Daley    schedule 13.12.2010