首页 > 解决方案 > Geb - 不起作用 attr。必需(常规测试)

问题描述

我创建测试(groovy,geb)。我有这样的事情:

class test extends Module {
  static content = {
    first{ $("input", id: "one") }
    second(required: false) { $("input", id: "two") }
    third(required: false) { $("input", id: "three") } }
 
  def setNewValues(def newValues) {
    first.value(newValues.first)
    second.value(newValues.second)
    third.value(newValues.third)
  }
 
  def assertingValues(def values) { 
    assert first.value() == values.first 
    assert second.value() == values.second
    assert third.value() == values.third  
  }
}

它是不同组合模块的通用模块。并且在不同的情况下,模块只能有第一个输入,或者第一和第二,或者第一和第三。我可以为具有不同组合的模块重用我的 setNewValues 和 assertingValues 方法吗?

如果我尝试使用我的方法,我会得到“基于空导航器的 geb.module.Checkbox 模块不支持此操作”

标签: testingautomated-testsspockgebgroove

解决方案


就我个人而言,如果模块包含不同的内容,我会将它们建模为不同的类 - 您尝试做的事情感觉太通用且过于聪明,但我可能没有完整的上下文来理解您为什么以这种方式接近它。但是,如果您坚持这样做,那么您可以使用if语句包装可选内容的用法,即

if (second) {
    second.value(newValues.second)
}

if (second) {
    assert second.value() == values.second
}

推荐阅读