私はチュートリアルの後でJasmineを使ってAngularサービスをテストしようとしていましたが、何らかの理由で彼らの例はここでは機能しません(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