我的 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();
所以,很明显,间谍无法知道在创建并开始监视之前已经进行的调用。
我的规格:
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();
所以,很明显,间谍无法知道在创建并开始监视之前已经进行的调用。