WithNewWindow()在Geb中返回MultipleCompilationErrorsException

时间:2016-08-06 08:31:21

标签: grails groovy closures functional-testing geb

我的geb功能测试中出现了奇怪的错误。

 org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Spec expression: 1: expecting '}', found 'assert' @ line 1, column 71.
    } ) { at(JobOfferDetailPage) assert des

我的测试看起来像这样。我点击一个链接,打开一个新窗口,其中包含工作机会的详细信息。我想使用页面模式在新页面上声明一些文本。

测试:

withNewWindow( { quickShowOption.click() } ) { //TODO fix me
                    at(JobOfferDetailPage)
                    assert description.text() == 'some text'
                    assert requirements.text() == 'some text'
                    assert advatages.text() == 'some text.'
                    assert categories.text() == 'some text'
                    assert locality.text() == 'some text'
                }

页:

class JobOfferDetailPage extends Page {
    static at = {$('#contactLabel').text() == 'Contact'}

    static content = {
        description {$('#jobOfferDescription')}
        requirements {$('#jobOfferRequirements')}
        advatages {$('#jobOfferAdvantages')}
        jobOfferType {$('#jobOfferType')}
        categories {$('#categories')}
        locality {$('#locality')}
        startDate {$('#startDate')}
        requiredLanguages {$('#requiredLanguages')}
    }
}

我的条件断言后出现编译错误。如果我在断言文本中输入错误而不是测试会正常失败,但是如果它通过了,那么它会因为这个奇怪的错误而失败。

谢谢@Erdi。

我使用spock,geb版本“0.13.1”和selenium版本“2.51.0”。

1 个答案:

答案 0 :(得分:1)

如果有人相信this comment in one of Geb's own tests,这不是我前面写的,这确实看起来像Spock中的某种错误。有趣的是,我刚刚将该语句移动到expect块,只要传递给newWindow()的第二个闭包中的最后一个语句求值为true,它就会起作用。这让我觉得这是旧版Spock和/或Groovy的问题。您使用上述工具的哪些版本?

一种可能的解决方法是将您的语句从expect / then移至未声明(givenwhen)的语句,如我在测试中所示到。