2014-11-07 1 views
4

На веб-сайте, на котором я хочу протестировать, есть целевая страница, в которой предлагается выбрать язык. Вы можете пропустить этот вопрос, добавив дополнительный параметр в URL-адрес. Я хочу протестировать это поведение с Geb и Spock в качестве основы тестирования.Обработка перенаправлений и неявных утверждений

Так у меня есть целевая страница с выбором языка:

class LanguageSelectionPage extends Page { 

    static url = "http://localhost:8080/registration/" 

    static at = { $("form#languageForm") } 
} 

На второй странице, где она перенаправляет:

class InsertCardReaderPage extends Page { 

    static at = { welcomeTitle1 } 

    static content = { 
     welcomeTitle1(wait: true, cache: false) { $("#eidWelcomeTitle1") } 
     welcomeTitle2(wait: true, cache: false) { $("#eidWelcomeTitle2") } 
    } 
} 

(я удалил некоторые методы из вставленного кода)

Это мой тест:

given: 
to LanguageSelectionPage, "09"; 

expect: 
at InsertCardReaderPage; 

«09» - дополнительный параметр в URL-адресе, когда этот доступен, вы будете немедленно перенаправлены сервером (перенаправление http, так что страница изменится) до InsertCardReaderPage. Теперь моя проблема в том, что оператор to выполняет неявное утверждение в закрытии at. Это не удается, потому что вы уже перенаправлены со страницы.

Есть ли способ условно отключить это неявное утверждение в этом случае? Или любое другое предложение по настройке страниц? Я довольно новичок в Geb и не могу найти документацию, которая, кажется, мне помогает в этом случае.

+0

Would используя страницу без на утверждение сделать трюк? – twinj

+0

Я не вижу в этом жизнеспособного варианта. В 99% моих тестов я хочу убедиться, что вы начинаете с 'LanguageSelectionPage'. Мне нравится функция, которую мне не всегда нужно делать явное утверждение, чтобы проверить это. – ChristopherS

+0

Просто небольшое примечание, кеш: false по умолчанию, вам не нужно явно указывать его – erdi

ответ

5

Использование через вместо к

given: 
via LanguageSelectionPage, "09"; 

expect: 
at InsertCardReaderPage; 

Geb Manual

+0

Работает как шарм! Должно быть, пропустил этот маленький абзац при просмотре документации :( – ChristopherS

+0

Я использую его сам, но совершенно забыл об этом прошлой ночью. В противном случае я бы ответил скорее. – twinj