我最近发现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]);
}
});
});
我得到了预期的输出,除了没有关于规范没有通过的细粒度细节。那里有什么帮助吗?