如果在空手道中嵌套?

Nested if in karate?

需要断言角色并使少数角色的测试脚本失败(如果没有为它们禁用按钮)。 为此,我尝试执行类似于以下的步骤:

   * assert (role=="DM"||role=="RM"||role=="AVP")
   * eval if((role=="DM"||role=="AVP")? read('classpath:extraFeature.feature@checkIfDisabled') : print "options disabled... proceeding further!"

在这里,我调用一个带有标签@checkIfDisabled 的场景,其功能包含:

* if(exists(#listButton)) karate.fail("Options are enabled... Cannot proceed further! ")

我觉得为这个小东西调用不同的功能文件是不值得的。此外,这也没有按预期工作。嵌套 if 本来可以解决这个问题。如果不是或者我的方法有误,请帮助我解决一些可以增加逻辑的问题。

我也试过将上面调用的场景代码存入一个变量中调用。

* def fun = if(exists(#listButton)) karate.fail("Options are enabled... Cannot proceed further! ")
* call fun

但是错误语句类似于“此变量不可调用”。我的理解是我这边出了问题。但是为了寻找嵌套 if 的替代方案,我做了一些成功和试验。有什么建议或方法来解决这个问题吗?

谢谢!

你可以使用 eval 然后像这样委托给纯 JS:

* eval
"""
if (exists('#listButton')) karate.fail('blah')
else if (someCondition) {
  // do something
}
"""

如果需要,甚至可以使用 JS switch case

如果这没有帮助,我会留下这个答案,没有其他建议:

让我知道什么有效!