我正忙于在Geb / Spock中进行e2e测试,我想知道如何添加自定义消息。 现在我只得到这样的堆栈跟踪:
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()
}
我认为文本“联系人显示在搜索结果中”会出现在错误消息中,但显然不会。是否可能有另一种方式在Spock的Geb中打印自定义消息以获得更清晰的信息?
特别是对于'在跳棋'我想要自定义消息,因为当检查失败时,你只会得到:
java.lang.NoSuchMethodError: geb.error.GebAssertionError.<init>(Ljava/lang/Object;Ljava/lang/Throwable;)V
at geb.waiting.WaitTimeoutException.<init>
等
编辑: 嗯,我现在意识到,测试失败了,因为它还会在执行“then”之前检查所需的页面内容。我仍然希望能够添加自定义消息(特别是对于'在西洋跳棋')...有人知道这是否可能?
答案 0 :(得分: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")}
}
}