node.js - 测试总是超时,不显示 promise 输出

标签 node.js promise protractor

        browser.sleep(4000);
        var discount_type = element(by.id("discount_type"));
        var discount_value= element(by.id("discount_value"));
        var grandTotal    = element(by.id("grand-total"));
        var subtotal      = element(by.id("subtotal"));
        var delivery_fee  = element(by.id("delivery_fee"));

        var last = protractor.promise.defer();

        console.log("hallo");
        subtotal.getText().then(function(sub) {
          console.log("#############");
          console.log(sub);
          delivery_fee.getText().then(function(fee) {
            console.log(fee);
            var calc = parseFloat(sub) - parseFloat(fee) - parseFloat(config.promocodes.referral.discount);
            console.log(calc);
            last.fulfill(calc);
          }); 
        }); 
        last.then(function(calc) { 
            console.log("final wait");
            expect(grandTotal.getText()).toBe("$" + calc); 
        }); 

我需要计算一个值才能确定我的测试运行正常。

在我的测试中,我总是能在控制台中看到“hallo”。 然后我得到一个

> hallo
 A Jasmine spec timed out. Resetting the WebDriver Control Flow.
> F
> 
> Failures: 1) Refer a user and apply referral code should assign
> referral discount to user   Message:
>     Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.   Stack:
>     Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
>         at Timer.listOnTimeout (timers.js:92:15)

看起来代码从未进入subtotal.getText() promise !这是为什么???

最佳答案

永远不会从 promise 解析函数中返回。而且,您不必延迟:

var last = subtotal.getText().then(function(sub) {
  return delivery_fee.getText().then(function(fee) {
    return parseFloat(sub) - parseFloat(fee) - parseFloat(config.promocodes.referral.discount);
  }); 
}); 
last.then(function(calc) { 
    expect(grandTotal.getText()).toBe("$" + calc); 
}); 

关于node.js - 测试总是超时,不显示 promise 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41103018/

相关文章:

mongodb - 存储 mongoose (node.js orm) 查询结果

node.js - 在 Node js 应用程序中异步运行 request.post

javascript - Axios POST promise 无法按预期工作

javascript - Protractor :我是否过度使用了 promise.then()

javascript - Protractor “陈旧元素引用 : element not attached. ..如何解决此问题?

node.js - 如何根据 Sequelize 中的 created_at 进行排序?

node.js - 为什么 Express.js 的 app.get() 只能在调用 app.listen() 的同一个文件中工作?

node.js - Sequelize CLI : db:migrate results in most columns failing to add

javascript - Promise/Block 的 catch 语句都没有执行

selenium - 如何在不使用 Selenium 服务器的情况下从 Protractor headless 运行 Chrome