gpt4 book ai didi

javascript - 使 expect 的两个部分 resolve promises

转载 作者:行者123 更新时间:2023-11-30 00:06:04 24 4
gpt4 key购买 nike

问题:

在 Protractor 中,expect() 被修补以隐式理解启用 速记断言样式 的 promise 。例如:

expect(elm.getText()).toEqual("expected text");

elm.getText() 不需要用 then() 显式解析,并且会在检查期望值之前由 Protractor 隐式解析。

但是,如果“等于”部分也是一个 promise 呢?例如,来自另一个元素的文本。在这种情况下,我们必须显式解决第二部分:

elm2.getText().then(function (text2) {
expect(elm1.getText()).toEqual(text2);
});

问题:

是否可以修补 Jasmine/Protractor 使其理解断言两边的 promise ?能够写作:

expect(elm1.getText()).toEqual(elm2.getText());

最佳答案

刚刚对双方的 promise 进行了测试 - 它解决了他们的问题。尝试你的项目。也许你无事可做:

describe('ololo', function () {

it('both sides are promises', function () {
browser.get('http://www.protractortest.org/testapp/ng1/#/form');

let elementText1 = $('.ng-scope p').getText();

let elementText2 = $('#transformedtext>h4').getText();

//Will fail here, but you can see that it successfully resolved promises
expect(elementText1).toEqual(elementText2);
});

});

如果这对您不起作用 - 我认为您可以使用 protractor.promise.all,例如:

protractor.promise.all([elm2.getText(), elm1.getText()])
.then(texts=> expect(texts[0]).toEqual(texts[1]), 'texts should be same')

或者更难的方法——创建自己的匹配器。看看我如何在我的库中使用匹配器中的 promise : https://github.com/Xotabu4/jasmine-protractor-matchers/blob/master/index.js#L39

关于javascript - 使 expect 的两个部分 resolve promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512113/

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