Невозможно вызвать beforeEach для "внедрения" в модульном тестировании angularJS (FUSE Admin) с использованием кармы
Я использовал приложение FUSE Admin в своем проекте - http://fuse-angular-material.withinpixels.com/apps/dashboards/project.
Я уже проверил другие примеры и даже запустил этот код в другом проекте и работает просто отлично. Просто я не могу внедрить службу, контроллер и т. Д. В 'beforeEach inject', поэтому я не могу продолжать. мой тест
Я не знаю, что не так, или я что-то упустил (зависимости? Не уверен) при запуске этого на FUSE. Есть ли у вас какие-либо идеи?
Вот мой код
SERVICE (сервис возвращает список массивов)
(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']);
}
})();
МОДУЛЬНЫЙ ТЕСТ
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);
});
});
1 ответ
Во-первых, вы должны переместить блок 'it' за пределы блока beforeEach. Затем, чтобы получить услугу из модуля, есть два подхода.
Использование инжектора (не распространено):
Здесь вам нужно вручную создать инжектор из модуля.
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); }));
Как видите, второй подход намного проще.
См. Также: инъекционные услуги