该应用程序上的所有内容都运行良好,因此只是我的测试在语法上不正确。这是我正在使用的截断版本。名称和位置已更改以保护无辜者。
var m;
m = angular.module('CustomService', []);
window.CustomService = m.factory("CustomService", function($rootScope) {
var sharedService;
sharedService = {};
sharedService.broadcastItem = function() {
return console.log('Works!');
};
return sharedService;
});
window.MyCtrl = function($scope, $location, CustomService) {
this.$inject = ['$scope', 'CustomService'];
return $scope.test_method = function(date) {
return CustomService.broadcastItem(date);
};
};
describe('MyCtrl', function() {
beforeEach(inject(function($rootScope, $controller, $location) {
this.scope = $rootScope.$new;
return this.controller = $controller(MyCtrl, {
$scope: this.scope,
$location: $location,
CustomService: CustomService
});
}));
return it('tests my method', function() {
return this.scope.test_method('10-1984');
});
});
最后一行返回:
TypeError: Object #<Object> has no method 'test_method'
奇怪的!因为我的整个应用程序都可以正常工作并蓬勃发展,因为该方法可以完美运行。所以一定是我没有正确注入这个模块(猜测!)。