0

我的规格:

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函数似乎没有被调用。我究竟做错了什么?

4

1 回答 1

1

您正在构建控制器:

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

它要求buildScheduleUrl()范围:

$scope.buildScheduleUrl();

然后,您监视此功能:

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

所以,很明显,间谍没有办法知道在它被创建并开始监视之前已经发出的调用。

于 2015-04-30T20:20:35.413 回答