gpt4 book ai didi

javascript - 如何使用 Protractor 在 e2e 测试中预期元素的动态计数

转载 作者:行者123 更新时间:2023-12-03 13:27:55 25 4
gpt4 key购买 nike

我目前正在使用 Protractor 为我不起眼的 Angular 应用程序编写一些 e2e 测试。

我的应用程序运行良好,单元测试全部通过,也使用了 e2e ......直到这个:

appE2ESpec.js

describe('adding an item', function() {
var items,
addItemButton,
startCount;

beforeEach(function() {
items = element.all(by.css('li.item'));
addItemButton = element(by.id('addItemButton'));
startCount = items.count();
});

it('should display a new item in list', function() {
addItemButton.click();

expect(items.count()).toEqual(startCount+1);
});
});

这就是我编写测试的方式,但是,

问题是:那 items.count() 返回一个 promise ,我知道,但我无法强制 Protractor 解决它。所以我明白了:
Failures:

1) myApp adding an item should display a new item in list
Message:
Expected 6 to equal '[object Object]1'.

我试过的:
items.count().then(function(count) {
startCount = count;
//console.log(startCount) --> "6" Perfect!
});

但最后得到了相同的结果......我不能把 expect进入 then ,我也想过。
  • 我搜索了 Protractor GitHub 存储库问题、StackOverflow 和 Google AngularJs 组。

  • 附录:
    console.log(startCount)输出这个:
    { then: [Function: then],
    cancel: [Function: cancel],
    isPending: [Function: isPending] }

    我可以写 .toEqual(6)但我不想每次需要更改应用程序启动状态时都重写我的测试。

    任何想法?提前致谢!!

    最佳答案

    您需要解决 promise ,然后执行断言。

    Protractor 将解析您传递给 expect() 的 promise ,但它不能向 promise 添加数字。你需要先解决promise的值:

    beforeEach(function() {
    ...
    items.count().then(function(originalCount) {
    startCount = originalCount;
    });
    });

    it('should display a new item in list', function() {
    ...
    expect(items.count()).toEqual(startCount+1);
    });

    关于javascript - 如何使用 Protractor 在 e2e 测试中预期元素的动态计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21685161/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com