我一直在嘗試使用茉莉花以下教程測試的角度服務測試的角度服務(不出廠),但由於某種原因,他們的例子並沒有這樣做的工作(他們建議使用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