我有一个Protarctor-CucumberJS框架和一套测试方案。 当我执行整个套件时,一个脚本在期望(ChaiJS)语句中失败。
sealed trait AlphaNumericChar
sealed trait AlphaChar extends AlphaNumericChar
case object A extends AlphaChar
case object B extends AlphaChar
sealed trait NumericChar extends AlphaNumericChar
case object One extends NumericChar
case object Two extends NumericChar
def foo(x: AlphaNumericChar) = x match {
case One => println("hi")
case Two => println("bye")
case A => println("foo")
case B => println("bar")
}
def bar(x: AlphaChar) = foo(x)
def aThirdFunction(y: NumericChar) = y match {
case One => println("eggs")
case Two => println("beans")
}
foo(One) // hi
foo(Two) // bye
foo(A) // foo
foo(B) // bar
bar(A) // foo
bar(B) // bar
aThirdFunction(One) // eggs
aThirdFunction(Two) // beans
该特定步骤的步骤定义如下:
Scenario 1 : Passed
Scenario 2 : Passed
Scenario 3 : Failed (Unresolved Promise)
Scenario 4 : Skipped
Scenario 5 : Skipped
Scenario 6 : Skipped
Scenario 7 : Skipped
Scenario 8 : Skipped
Scenario 9 : Skipped
Scenario 10 : Skipped
由于存在缺陷,应用程序未显示错误,元素:$(“。abc”)未显示在屏幕上,并且此功能在30秒钟的功能超时后失败。完整错误粘贴在下面。但是问题是,在跳过所有其他情况之后,都会出现相同的错误消息。
错误:函数超时,确保承诺在30000毫秒内解析 在Timeout._time.default.setTimeout [作为_onTimeout](C:\ bla \ bla \ node_modules \ cucumber \ lib \ user_code_runner.js:81:20) 在ontimeout(timers.js:436:11) 在tryOnTimeout(timers.js:300:5) 在listOnTimeout(timers.js:263:5) 在Timer.processTimers(timers.js:223:10)
问题:
答案 0 :(得分:2)
您可以使用async
函数吗?如果是这样,您可以尝试使用条件来确定元素是否存在,如下所示:
Then('I verify if valid success message received as {string}', async function (successMessage, done) {
const abcElement = await $(.abc).isPresent();
if (abcElement) {
expect(await $(.abc).getText()).to.eventually.equal(successMessage);
done();
} else {
done();
}
});