Geb无法将我的课程视为内容页面

时间:2015-09-18 13:39:44

标签: testing geb

当我尝试运行我的测试时,我得到了这个例外:

groovy.lang.MissingPropertyException: Unable to resolve code as content for pages FactIndexPage, or as a property on its Navigator context. Is code a class you forgot to import?

这是我的测试类

import geb.spock.GebReportingSpec
import pages.*
import spock.lang.Stepwise

@Stepwise
class FactControllerSpec extends GebReportingSpec {

    def "test de la presence du code dans la page d'acceuil"() {
        given: "test que le champ code de facture est bien present"
        when: 
        to IndexFactPage
        then: $("form", name: code).find("input", type: "button")
    }
}

在描述我的网页内容的班级下方

import geb.Page

类IndexFactPage扩展了页面{

static url = "/fact/mmapay"
static at = {
     $("h2").text() == "Pour régler votre facture, veuillez saisir:" }

static content = {
    codeField { $("input[name = code]") }
    nomField { $("input[name = nom]") }
    prenomField { $("input[name = prenom]") }
    montantField { $("input[name = montant]") }
    chercher1 { $("input", type: "button") }
    abandonner1 { $("input", type: "button") }      
}

}

请帮我解决我的类IndexFactPage作为内容页面..

提前谢谢..

1 个答案:

答案 0 :(得分:0)

导致您出现问题的部分是 $("表格",名称:代码)

$("表格",名称:"代码")会找到一个名为代码的表单,这可能不是您所要求的之后根据你的页面和规范片段。

在没有看到页面来源的情况下,无法提供正确的解决方案,但是您的 IndexFactPage

中有一些观察结果
static content = {
    codeField { $("input[name = code]") }
    nomField { $("input[name = nom]") }
    prenomField { $("input[name = prenom]") }
    montantField { $("input[name = montant]") }
    chercher1 { $("input", type: "button") }
    abandonner1 { $("input", type: "button") }      
}

这些字段 codeField nomField prenomField montantField 都看起来像是映射到单个字段但是 chercher1 abandonner1 会选择相同的按钮。

根据您的规范声明的目的,那么您的规范可能应该如此 -

import geb.spock.GebReportingSpec
import pages.*
import spock.lang.Stepwise

@Stepwise
class FactControllerSpec extends GebReportingSpec {

    def "test the presence of the code field on the home page"() {
        when: "we are on the home page"
            to IndexFactPage

        then: "the code field is present"
            codeField.present
    }
}