最近、ユニットテスト用の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]);
}
});
});
仕様に合格しなかった詳細がないことを除いて、期待どおりの出力が得られます。何か助けはありますか?