2017-02-08 8 views
0

Я занят тестированием e2e в Geb/Spock, мне было интересно, как я могу добавлять пользовательские сообщения. Теперь я только получаю StackTrace так:Пользовательские сообщения при регистрации для неудачных тестов с Geb/Spock?

geb.error.RequiredPageContentNotPresent: The required page content 'pages.patientConversation.PcModal -> contact: geb.navigator.EmptyNavigator' is not present 
    at geb.content.TemplateDerivedPageContent.require(TemplateDerivedPageContent.groovy:60) 
    at geb.content.PageContentTemplate.create_closure1(PageContentTemplate.groovy:63) 
    at geb.content.PageContentTemplate.create_closure1(PageContentTemplate.groovy) 

и т.д ...

Это пример моего теста:

def "allow for searching contacts"() { 
    when: 
    to LoginPage 
    login(emailAddress, defaultPassword) 
    then: 
    at QuickBar 
    when: 
    startButton.click() 
    then: 
    at Modal 
    when: 
    selectContactButton.click() 
    contactSearchField.value(context.pcUser2.surname) 
    then: "the contact is shown in the search results" 
    contact.isDisplayed() 
} 

Я понял текст «контакт показан на результаты поиска "будут присутствовать в сообщении об ошибке, но, по-видимому, это не так. Возможно, есть еще один способ в Geb of Spock для печати пользовательских сообщений для большей ясности?

Специально для «в шашки» Я хотел бы иметь пользовательские сообщения, потому что, когда при проверке не удается, вы только получаете:

java.lang.NoSuchMethodError: geb.error.GebAssertionError.<init>(Ljava/lang/Object;Ljava/lang/Throwable;)V 

at geb.waiting.WaitTimeoutException.<init> 

и т.д.

EDIT: Хммм сейчас я понимаю, то тест завершился неудачно, потому что он также проверяет требуемое содержимое страницы, прежде чем делать «затем». Тем не менее, я хотел бы добавить пользовательские сообщения (особенно для «на шашки») ... Кто-нибудь знает, возможно ли это?

ответ

7

Вы можете использовать custom-message, чтобы добавить собственное сообщение WaitTimeoutException

class HomePage extends Page { 

    static at = { 
     waitFor(message:"My custom message") {title == "Acme Corporation"} 
     waitFor(message:"My custom message",20) {$("#roadRunner")} 
    } 
} 
+0

Спасибо! И когда я хочу дать пользовательское сообщение для обычного материала «a == b»? Вероятно, это скорее вопрос Спока. –

+0

Вы можете использовать сообщение assert '' 'then: assert a == b:« Мое сообщение custome » ' '' – Royg

+0

Спасибо. Чтобы плохо, вам все равно нужно «утверждать» в этом случае, потому что я думал, что сила Spock была неявной, утверждает –