为什么在 karma 中,当我将一个伪数组传递给一个函数时,我返回的是未定义的?
why in karma when i pass in a fake array to a function am i returned undefined?
我正在测试我的功能:
var depotItems = [1,2,3];
$scope.depotSortFunction = function (depotItems) {
depotItemsAndCheckedValues = depotItems.map(function (value) {
return { "val": value, "checked": false };
});
return depotItemsAndCheckedValues;
}
和我的业力测试:
it("should arrange an array into object with extra value for entities + depots", inject(function (shareDataService) {
var dummyEntityArray = ["ent1","ent2","ent3"];
expect(mainScope.entitySortFunction).toBeDefined();
spyOn(mainScope, 'entitySortFunction');
mainScope.entitySortFunction(dummyEntityArray);
console.log(mainScope.entitySortFunction(dummyEntityArray));
expect(mainScope.entitySortFunction).toHaveBeenCalledWith(dummyEntityArray);
}))
到目前为止测试是绿灯,但我想测试entitySoryFunction
的输出。但是在这一行 console.log(mainScope.entitySortFunction(dummyEntityArray));
上,当我检查日志时,我得到 Undefined.
这是为什么?我在我的函数中返回我的新对象值。
编辑 -
console.log - LOG: undefined
的业力输出
尝试调用 spyOn(mainScope, 'entitySortFunction').and.callThrough();
,如果你不调用,间谍将不会执行你的实现。
我正在测试我的功能:
var depotItems = [1,2,3];
$scope.depotSortFunction = function (depotItems) {
depotItemsAndCheckedValues = depotItems.map(function (value) {
return { "val": value, "checked": false };
});
return depotItemsAndCheckedValues;
}
和我的业力测试:
it("should arrange an array into object with extra value for entities + depots", inject(function (shareDataService) {
var dummyEntityArray = ["ent1","ent2","ent3"];
expect(mainScope.entitySortFunction).toBeDefined();
spyOn(mainScope, 'entitySortFunction');
mainScope.entitySortFunction(dummyEntityArray);
console.log(mainScope.entitySortFunction(dummyEntityArray));
expect(mainScope.entitySortFunction).toHaveBeenCalledWith(dummyEntityArray);
}))
到目前为止测试是绿灯,但我想测试entitySoryFunction
的输出。但是在这一行 console.log(mainScope.entitySortFunction(dummyEntityArray));
上,当我检查日志时,我得到 Undefined.
这是为什么?我在我的函数中返回我的新对象值。
编辑 -
console.log - LOG: undefined
尝试调用 spyOn(mainScope, 'entitySortFunction').and.callThrough();
,如果你不调用,间谍将不会执行你的实现。