gpt4 book ai didi

javascript - 期望数组中的项目

转载 作者:可可西里 更新时间:2023-11-01 01:59:12 24 4
gpt4 key购买 nike

我的一个测试期望错误消息文本是多个值之一。自 getText()返回 promise 我不能使用 toContain() Jasmine 匹配器。自 protractor 以来,以下内容将不起作用(jasminewd 底层)不会解决匹配器第二部分中的 promise ,toContain()在这种情况下:

expect(["Unknown Error", "Connection Error"]).toContain(page.errorMessage.getText());

问题:有没有办法用 jasmine+protractor 检查一个元素是否在一个数组中,其中一个元素是一个 promise?

换句话说,我正在寻找 toContain() 的倒数这样 expect()将隐式解决传入的 promise 。


作为变通方法,我可以使用 then() 显式解析 promise :

page.errorMessage.getText().then(function (text) {
expect(["Unknown Error", "Connection Error"]).toContain(text);
});

我不确定这是否是最佳选择。我也可以接受基于第三方的解决方案,例如 jasmine-matchers .


举个例子,这种断言存在于Python中:

self.assertIn(1, [1, 2, 3, 4]) 

最佳答案

看来您需要一个自定义匹配器。根据您使用的 Jasmine 版本:

使用 Jasmine 1:

this.addMatchers({
toBeIn: function(expected) {
var possibilities = Array.isArray(expected) ? expected : [expected];
return possibilities.indexOf(this.actual) > -1;
}
});


使用 Jasmine 2:

this.addMatchers({
toBeIn: function(util, customEqualityTesters) {
return {
compare: function(actual, expected) {
var possibilities = Array.isArray(expected) ? expected : [expected];
var passed = possibilities.indexOf(actual) > -1;

return {
pass: passed,
message: 'Expected [' + possibilities.join(', ') + ']' + (passed ? ' not' : '') + ' to contain ' + actual
};
}
};
}
});


您必须在每个 describe block 的 beforeEach 部分执行此操作。

你的期望看起来像:

expect(page.errorMessage.getText()).toBeIn(["Unknown Error", "Connection Error"]);

关于javascript - 期望数组中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28747161/

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