量角器:如果一个方案失败,如何解决承诺并停止跳过方案

时间:2019-11-22 17:29:10

标签: javascript protractor cucumberjs

我有一个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)

问题:

  1. 如果一种情况失败,如何避免跳过先前的情况?
  2. 如何在上述情况下兑现承诺。

1 个答案:

答案 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();
        }
    });