我在我的项目中使用了FUSE Admin应用程序 - http://fuse-angular-material.withinpixels.com/apps/dashboards/project。
我已经检查了其他样本,甚至在不同的项目上运行此代码并且运行正常。这只是因为我无法在每次注入之前注入服务,控制器等,因此我无法接受。我的考试。
在FUSE上运行时,我不知道错误或错过了某些内容(依赖项?不确定)。你有什么想法吗?
这是我的代码。
服务 (该服务返回一个数组列表)
(function () {
'use strict';
angular
.module('app.admin.users', [])
.config(config)
.service('adminUserService', service);
function service(msApi) {
return {
adminUserList: function () {
return msApi.resolve('admin.users.list@query');
}
};
}
function config(msApiProvider) {
// calling the API (used dummy data)
msApiProvider.register('admin.users.list',['app/data/admin/users/users.json']);
}
})();
UNIT TEST
var oDataService;
var adminUserService;
describe('unit test ----------------------------', function () {
beforeEach(module('app.admin.users'));
beforeEach(function () {
inject(function ($injector) {
adminUserService = $injector.get('adminUserService');
oDataService = adminUserService.adminUserList();
});
});
it("is registered with the module.", function () {
expect(oDataService).not.toBe(null);
});
});
答案 0 :(得分:0)
首先,你应该移动它'阻止在每个块之外。 然后从模块获得服务,有两种方法。
使用注射器(不常见):
在这里,您需要从模块手动创建注射器。
it('test my service', function(){
var $injector = angular.module(['app.admin.users'])
var service = injector.get('adminUserService')
expect(service.adminUserList()).not.toBe(null);
});
使用注入(更常见)
it('test my service', inject(function(adminUserService){
expect(adminUserService.adminUserList()).not.toBe(null);
}));
正如您所见,第二种方法更容易。
另请参阅:Injecting Services