我的 Karma 间谍没有发现我的控制器功能

My Karma spy is not picking up on my controller function

我的规格:

describe('ScheduleController', function() {
    var ScheduleController, scope, spies = {};

    beforeEach(function() {
      module('mapApp');

      return inject(function($injector) {
        var $controller, $rootScope;
        $rootScope = $injector.get('$rootScope');
        $controller = $injector.get('$controller');

        scope = $rootScope.$new()

        $controller('ScheduleController', {
            $scope: scope
        });

        spies.buildScheduleUrl = spyOn(scope, 'buildScheduleUrl').and.callThrough();
      });
    });

    it('should build a schedule url', function() {
        expect(spies.buildScheduleUrl).toHaveBeenCalled();
    });
});

我的控制器:

window.map.controller('ScheduleController', ['$scope', '$window', 'cache', 'scheduleCache', 'dosingCache', 'patientCache', '$modal', 'util',
    function ($scope, $window, cache, scheduleCache, dosingCache, patientCache, $modal, util) {
        // other stuff here


        $scope.buildScheduleUrl();

    }

]);

所以我的 buildScheduleUrl 函数似乎没有被调用。我做错了什么?

您正在构建控制器:

$controller('ScheduleController', {
     $scope: scope
});

在作用域上调用 buildScheduleUrl()

$scope.buildScheduleUrl();

然后,你监视这个函数:

spies.buildScheduleUrl = spyOn(scope, 'buildScheduleUrl').and.callThrough();

所以,很明显,间谍无法知道在创建并开始监视之前已经进行的调用。