0
我有這樣的控制器:使用在一個單元測試服務,角
angular.module('clientApp')
.controller('MainCtrl', function ($scope, projects) {
$scope.projects = projects;
});
項目是來自數據庫的決心。它在視圖中起作用。
這是我的服務:
angular.module('clientApp.services', ['ngResource'])
.factory('Projects', function($resource){
return $resource('/api/project/:prj_id', {'prj_id':'@prj_id'});
})
.factory('MultiProjectsLoader',['Projects', '$q', '$stateParams',
function(Projects, $q) {
return function() {
var delay = $q.defer();
Projects.query(function(projects) {
delay.resolve(projects);
}, function() {
delay.reject('Unable to fetch sizes');
});
return delay.promise;
};
}
]);
這是我app.js
$stateProvider
.state('home', {
url: '/',
templateUrl: 'views/home.html',
resolve:{
projects: ['MultiProjectsLoader', function(MultiProjectsLoader){
return new MultiProjectsLoader();
}]
},
controller: 'MainCtrl'
});
嘗試寫這樣一個測試:
'使用嚴格的';
describe('Controller: MainCtrl', function() {
// load the controller's module
beforeEach(module('clientApp'));
beforeEach(function() {
angular.module('clientApp.services');
});
var MainCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
MainCtrl = $controller('MainCtrl', {
$scope: scope
});
}));
it('should attach a list of projects to the scope', function() {
expect(scope.projects.length).toBeGreaterThan(1);
});
});
我得到:
Error: [$injector:unpr] Unknown provider: projectsProvider <- projects
我想我需要包括服務莫名其妙beforeEach(..)。但我無法得到它的工作。有任何想法嗎?
凡'projects'被定義?你有沒有在測試中包含該文件?你在使用Karma嗎? – Fresheyeball
項目在stateprovider中解析。是的,所有文件都被添加。是的,我正在使用業力。這個項目是從文員那裏拿來的。 – Per