为什么在 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();,如果你不调用,间谍将不会执行你的实现。

documentation