gpt4 book ai didi

javascript - Jasmine 期待(结果代码)。toBe(200 或 409)

转载 作者:数据小太阳 更新时间:2023-10-29 05:19:08 24 4
gpt4 key购买 nike

对于某些测试场景,我遇到了针对多个值进行测试的需求,这些值都可以。

我想做的事情如下:

expect(resultCode).toBeIn([200,409]);

resultCode200409 时,该规范应该通过。这可能吗?

已添加感谢 peter 和 dolarzo 指导我创建匹配器。我在使用 addMatchers() 时遇到了问题。所以,最后我在 jasmine.js 中添加了以下内容:

jasmine.Matchers.prototype.toBeIn = function (expected) {
for (var i = 0; i < expected.length; i++)
if (this.actual === expected[i])
return true;
return false;
};

这给了我一个可行的解决方案。我现在可以根据需要执行 toBeIn。 ( Jasmine 1.3.1)

最佳答案

为了使这样的事情有效:

 expect(3).toBeIn([6,5,3,2]);

Jasmine 有一个叫做匹配器的特性:

这是一个关于如何声明它们的例子。我在最后声明了您正在寻找的方法:

describe('Calculator', function(){
var obj;
beforeEach(function(){
//initialize object
obj = new Object();

jasmine.addMatchers({
toBeFive: function () {
return {
compare: function (actual, expected) {
return {
pass: actual === 5,
message: actual + ' is not exactly 5'
}
}
};
},
toBeBetween: function (lower,higher) {
return {
compare: function (actual, lower,higher) {
return {
pass: ( actual>= lower && actual <= higher),
message: actual + ' is not between ' + lower + ' and ' + higher
}
}
};
},
toBeIn: function(expected) {
return {
compare: function (actual, expected) {
return {
pass: expected.some(function(item){ return item === actual; }),
message: actual + ' is not in ' + expected
}
}
};
}
});


});

这是您需要的匹配器:

toBeIn: function(expected) {
return {
compare: function (actual, expected) {
return {
pass: expected.some(function(item){ return item === actual; }),
message: actual + ' is not in ' + expected
}
}
};
}

重要 Jasmine 2.0。我不得不将 jasmine.addMatchers({ 与 jasmine specrunner.html 一起使用,但是当我使用 Karma 配置它时,我不得不将 jasmine 替换为 this 之类的this.addMatchers({ 因为 Karma 使用较早版本的 Jasmine。

关于javascript - Jasmine 期待(结果代码)。toBe(200 或 409),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20941343/

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