我一直在尝试使用茉莉花以下教程测试的角度服务测试的角度服务(不出厂),但由于某种原因,他们的例子并没有这样做的工作(他们建议使用angular.mock.inject()
方法注入的服务) ...单位使用茉莉花
这是我得到它的工作方式,但恐怕这是不是应该怎么做......
这是“好的做法”?为什么注射不起作用?
我基本上导入服务进入测试,设置我的模块和$provide
服务的依赖,并new
服务传递什么通常会被注入...
不管怎么说,那就是:
import rolesService from './roles.service.js';
describe('Roles',() => {
let RolesService;
let PermRoleStore;
let USER;
beforeEach(() => {
angular.mock.module('roles', ($provide) => {
$provide.constant('USER', {
roles: ['SOUTIEN_ORGANISME']
});
$provide.value('PermRoleStore', {
defineManyRoles: jasmine.createSpy(),
});
});
angular.mock.inject((_PermRoleStore_, _USER_) => {
PermRoleStore = _PermRoleStore_;
USER = _USER_;
RolesService = new rolesService(PermRoleStore, USER);
});
});
it('Setup should define the roles',() => {
RolesService.setup();
expect(PermRoleStore.defineManyRoles).toHaveBeenCalled();
});
describe('authorize',() => {
it('should return true if authorized',() => {
expect(RolesService.authorize('SOUTIEN_ORGANISME')).toBe(true);
});
it('should return false if the user it NOT authorized',() => {
expect(RolesService.authorize('NOT_AUTHORIZED')).toBe(false);
});
});
});
这里是karma.config.js文件仅供参考:
'use strict';
const stringify = require('stringify');
const babelify = require('babelify');
module.exports = (config) => {
config.set({
basePath: '',
frameworks: ['browserify', 'jasmine-ajax', 'jasmine'],
files: [
{ pattern: 'build/gouvernementales/app-gouvernementales.config.json', watched: true, served: true, included: false },
'build/gouvernementales/js/gouvernementales-libs.js',
'src/apps/gouvernementales/app-gouvernementales.js',
'src/apps/gouvernementales/**/*.spec.js',
'src/modules/**/*.spec.js',
],
preprocessors: {
'src/apps/gouvernementales/app-gouvernementales.js': 'browserify',
'src/apps/gouvernementales/**/*.spec.js': 'browserify',
'src/modules/**/*.spec.js': 'browserify',
},
browsers: ['PhantomJS'],
plugins: [
'karma-phantomjs-launcher',
// 'karma-chrome-launcher',
'karma-jasmine-ajax',
'karma-jasmine',
'karma-browserify',
'karma-coverage',
'karma-mocha-reporter',
],
browserify: {
debug: true,
transform: [
babelify,
stringify,
],
},
helpers: [
'src/spec/helpers/**/*.js',
],
reporters: [
'mocha',
'coverage',
],
coverageReporter: {
dir: 'coverage/',
reporters: [
{ type: 'text-summary' },
{ type: 'html' },
],
},
logLevel: config.LOG_DEBUG,
singleRun: false,
colors: true,
autoWatch: true,
});
};
问题是什么呢? –
每个教程都提到你应该在'angular.mock.inject()'方法中注入你的服务,但是在我的情况下它不起作用......不知道为什么。 – justinledouxweb
我也想知道如果这样做它在我的例子做的方式是“良好做法”或不... – justinledouxweb