2016-07-04 4 views
0

Я пишу блок-тест для моего приложения, написанного в Angular 1 и JSPM с кармой и жасмином.Единичное тестирование углового обслуживания с кармой/жасмином/JSPM

Вот моя карма конфигурация (JSPM раздел):

jspm: { 
    meta: { 
     'jspm_packages/github/angular/angular.js': { 
      format: 'global', 
      exports: 'angular' 
     }, 
     'jspm_packages/github/angular/angular-mocks.js': { 
      format: 'global', 
      deps: 'angular' 
     } 
    }, 
    loadFiles: [ 
     'test/**/*.js' 
    ], 
    serveFiles: [ 
     'app/**/*.js' 
    ] 
}, 

Для начала, я хочу, чтобы проверить пользовательский угловые услуги:

// imports 

class Game { 

    constructor($rootScope, $http, $timeout, $translate, $location) { 

     // ... 

     this.$rootScope.game = this; 

    } 

} 

Вот мой тестовый файл:

import { module, inject } from 'angular-mocks'; 

describe('this is a test', function() { 

    beforeEach(module('module-name')); 

    var game; 

    beforeEach(inject(function(_game_) { 
     game = new _game_; 
    })); 

    it('should be defined', function() { 
     expect(game).toBeDefined(); 
    }); 
}); 

Основная проблема заключается в том, что я сохраняю эту ошибку. Функция inject от угловых -моков не работает, потому что у меня есть переменная game, но это не должно быть.

PhantomJS 2.1.1 (Windows 8 0.0.0) should be defined FAILED 
    forEach 
    loadModules 
    createInjector 
    workFn 
    {path}/node_modules/karma-jspm/src/adapter.js:61:24 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:1188:34 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:1147:18 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:935:20 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:826:17 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:102:22 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:67:15 
    Expected undefined to be defined. 
    D:/{path}/node_modules/karma-jspm/src/adapter.js:61:24 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:1188:34 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:1147:18 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:935:20 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:826:17 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:102:22 
    [email protected]:/{path}/jspm_packages/system-polyfills.src.js:67:15 

Итак, я не могу понять, почему это не работает. Любая подсказка?

+0

Любое решение для этого? Я также сталкиваюсь с тем же вопросом –

ответ

0

может быть слишком поздно теперь, но попробовать его без нового ключевого слова:

beforeEach(inject(function(_game_) { 
    game = _game_; 
}));