单元测试 Javascript - 尽管代码按预期工作,但 Jasmine 测试失败
Unit testing Javascript - Jasmine test fails although code is working as expected
我正在尝试使用 javascript 开始单元测试。我正在使用 jasmine 框架 2.5.2 和 Netbeans 8.2 作为我的 IDE.
这是我要测试的简单代码:
var ListHandler = {
"reverseList": function (inputList) {
var list = inputList,
reversedList = [],
length = list.length;
for (var i = 0; i < length; i++) {
reversedList.push(list[length - i - 1]);
}
return reversedList;
},
"sumUp": function (inputList) {
var count = 0;
for (var i = 0; i < inputList.length; i++) {
count += inputList[i];
}
return count;
},
"concatenate": function (inputList1, inputList2) {
var result = inputList1.concat(inputList2);
return result;
}
}
这是我的测试:
describe("List Handler", function(){
it("should return reversed List",function(){
expect(ListHandler.reverseList([1,2,3])).toEqual([3,2,1]);
});
it("should return sum of list values",function(){
expect(ListHandler.sumUp([1,2,3])).toEqual(6);
});
it("should return concatenated List", function(){
expect(ListHandler.concatenate([1,2],["a","b"]).toEqual([1,2,"a","b"]));
});
});
所以当我 运行 测试时,前两个方法通过,但最后一个方法 "concenate" 出错:
TypeError: ListHandler.concatenate(...).toEqual is not a function
然而,当我像 alert(ListHandler.concatenate([1,2,5], ["a", "b", "c"]));
那样执行它时,它工作正常。有人可以向我解释为什么茉莉会抱怨吗?
您的右括号放错了地方。
试试看;
expect(ListHandler.concatenate([1,2],["a","b"])).toEqual([1,2,"a","b"]);
我正在尝试使用 javascript 开始单元测试。我正在使用 jasmine 框架 2.5.2 和 Netbeans 8.2 作为我的 IDE.
这是我要测试的简单代码:
var ListHandler = {
"reverseList": function (inputList) {
var list = inputList,
reversedList = [],
length = list.length;
for (var i = 0; i < length; i++) {
reversedList.push(list[length - i - 1]);
}
return reversedList;
},
"sumUp": function (inputList) {
var count = 0;
for (var i = 0; i < inputList.length; i++) {
count += inputList[i];
}
return count;
},
"concatenate": function (inputList1, inputList2) {
var result = inputList1.concat(inputList2);
return result;
}
}
这是我的测试:
describe("List Handler", function(){
it("should return reversed List",function(){
expect(ListHandler.reverseList([1,2,3])).toEqual([3,2,1]);
});
it("should return sum of list values",function(){
expect(ListHandler.sumUp([1,2,3])).toEqual(6);
});
it("should return concatenated List", function(){
expect(ListHandler.concatenate([1,2],["a","b"]).toEqual([1,2,"a","b"]));
});
});
所以当我 运行 测试时,前两个方法通过,但最后一个方法 "concenate" 出错:
TypeError: ListHandler.concatenate(...).toEqual is not a function
然而,当我像 alert(ListHandler.concatenate([1,2,5], ["a", "b", "c"]));
那样执行它时,它工作正常。有人可以向我解释为什么茉莉会抱怨吗?
您的右括号放错了地方。
试试看;
expect(ListHandler.concatenate([1,2],["a","b"])).toEqual([1,2,"a","b"]);