gpt4 book ai didi

javascript - 将 Jasmine 单元测试与 100 多个相同类型的测试一起使用

转载 作者:搜寻专家 更新时间:2023-11-01 05:24:42 25 4
gpt4 key购买 nike

我最近找到了Jasmine用于单元测试,这似乎是我正在做的事情的一个很好的解决方案。但是,我正在测试大约 100 种不同的可能性,我不想一遍又一遍地编写同一行代码。

所以我制作了一个充满测试的对象,并且我用这些测试一遍又一遍地循环单元测试。当我运行它时,它会打印出正确数量的测试。它们都通过,如下所示。

但后来我将“cero”更改为“cerFOOBARBAZ”,它仍然通过,这是错误的。然后我将 0 更改为任意数字(例如 993)并且它没有通过(它不应该,但是所有测试都失败了。

这是怎么回事?

   var tests = {
0 : "cero",
1 : "uno",
2 : "dos",
3 : "tres",
4 : "cuatro",
5 : "cinco",
6 : "seis",
7 : "siete",
8 : "ocho",
9 : "nueve",
10 : "diez",
11 : "once",
12 : "doce",
13 : "trece"

};

describe("Numbers Return Correctly", function() {

for(var test in tests) {
it("Returns Correct String Based On Integer Input", function() {
var number = parseInt(test);
expect(number.convertNumToWord("es")).toEqual(tests[test]);
});
}
});

编辑:我发现了问题所在。我多次运行整个描述,而不是单个规范。

但是,当我这样做时:

    var tests = {
0 : "cero",
1 : "uno",
2 : "dos",
3 : "tres",
4 : "cuatro",
5 : "cinco",
6 : "seis",
7 : "siete",
8 : "ocho",
9 : "nueve",
10 : "diez",
11 : "once",
12 : "doce",
13 : "trece"

};

describe("Numbers Return Correctly", function() {


//console.log(test);
//console.log(tests[test]);
it("Returns Correct String Based On Integer Input", function() {
for(var test in tests) {
var number = parseInt(test);
expect(number.convertNumToWord("es")).toEqual(tests[test]);
}
});

});

我得到了预期的输出,除了没有关于哪个规范没有通过的细粒度细节。有什么帮助吗?

最佳答案

您需要为每个测试创建一个闭包,否则在您的第一个示例中,您很多时候只测试最后一个值。它的干净版本看起来像这样:

describe("Numbers Return Correctly", function() {
var tests = { }; // ...

function addTest(test) {
it("Returns Correct String Based On Integer Input " + test, function() {
var number = parseInt(test, 10);
expect(number.convertNumToWord("es")).toEqual(tests[test]);
});
}

for(var test in tests) {
addTest(test);
}
});

关于javascript - 将 Jasmine 单元测试与 100 多个相同类型的测试一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13438202/

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