javascript - 我如何在 Protractor 测试中解决两个不同的 promise ?

标签 javascript angularjs node.js promise protractor

我是 Node.js 的初学者。 我 promise 从服务器下载文件,然后将其解析为 json 对象并返回。 另一个 promise 返回一个网页元素()。 这两个 promise 必须一个接一个地解决:第一个返回 json 对象的 promise ,这个工作很好, 然后是获取页面元素的 promise 。 使用来自 json 对象的键,我必须测试元素是否包含相同的文本。

代码:

var menuItems = element(by.id('menu')).all(by.tagName('li'));

it('should contain', function (done) {
  jsonPromise.then(function () { // work
    console.log('Inside jsonPromise then');
    menuItems.then(function () { //------> not step into
      console.log('Inside menuItems then');
      expect(menuItems.get(0).getText()).toEqual(jsonData.home);
      done();
    });
  });
});

使用此代码 Protractor 返回:1 个测试,0 个断言,0 个失败 这是为什么?我做错了什么?

注意:两个控制台命令都执行

最佳答案

您需要jsonPromise 放在protractorControl Flow:

browser.controlFlow().await(jsonPromise).then(function (data) {
    expect(menuItems.first().getText()).toEqual(data.home);
});

关于javascript - 我如何在 Protractor 测试中解决两个不同的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253112/

相关文章:

javascript - 理解 JavaScript 对象(值)

javascript - 重置 HTML 表单字段(避免撤消功能)

javascript - Node.js 服务器在浏览器中超时,但 cURL 请求有效

javascript - AngularJS 与 Bootstrap 导航栏一起用于单页应用程序

node.js - 第一次加载 Sails.js 应用程序时加载数据(固定装置)

linux - 如何将 'write' 环境变量作为脚本的输入?

javascript - forms.$valid 显示 true,但打印为 false

javascript - 如何使用 Antd InternalFormInstance 验证表单而不显示 UI 错误

javascript - jQuery 数据表无法在 symfony 中工作

javascript - scope.$watch() 在输入键按下或 location.path 工作后未触发