Spock 测试显示 groovy.lang.MissingPropertyException

Spock test showing groovy.lang.MissingPropertyException

我有以下 spock 测试。我首先进入登录页面,然后在不输入电子邮件和密码的情况下单击登录按钮来验证错误消息。我稍后会添加其他步骤,例如电子邮件但没有密码和电子邮件密码不正确,但我首先需要让这个测试工作。

package loginPageTests

import Pages.loginPage
import geb.Page
import geb.spock.GebReportingSpec

class invalidLoginSpec extends GebReportingSpec {

    def "Go to login page"() {
        when:
        Page loginPage = to loginPage
        waitFor { loginPage.loginButton.isDisplayed() }

        then:
        at loginPage
    }

    def "Try to log in without email or password"() {
        when:
        loginPage.loginButton.click()

        then:
        at loginPage
        assert loginPage.loginError.text() == "Please enter your email and password."
    }
}

以及下面的页面对象

package Pages

import geb.Page

class loginPage extends Page {
    static url = 'login/'
    static at = { title == "Login to TB"}
    static content = {
        loginButton {$("#loginButton")}
        loginError(wait:true) {$("#loginError")}
    }
}

第一种方法 运行 成功,但当第二种方法尝试 运行

时出现此错误

groovy.lang.MissingPropertyException: No such property: loginButton for class: Pages.loginPage

属性 loginButton 在 loginPage 页面对象中,所以我不确定为什么会出现此错误。

您与页面交互的方式不符合习惯,但要回答所问的问题...

您已将 loginPage 定义为第一个测试方法中的局部变量,然后试图在超出范围的第二个测试方法中引用它。