2015-08-06 1 views
0

Я пытаюсь создать экземпляр зависимости в своем модульном модуле с использованием Angular-Mocks.

beforeEach(inject(function ($injector) { 
    myService = $injector.get("commandService"); 
})); 

Если установить точку останова в myService = $injector.get("commandService"); и вызвать myService = $injector.has("commandService");, он возвращает true, но get() бросает исключение:

Uncaught Error: [$injector:undef] http://errors.angularjs.org/1.4.3/$injector/undef?p0=commandService 
at Error (native) 
at http://localhost:9876/base/bower/angular/angular.min.js:6:416 
at Object.$get (http://localhost:9876/base/bower/angular/angular.min.js:37:127) 
at Object.e [as invoke] (http://localhost:9876/base/bower/angular/angular.min.js:39:156) 
at http://localhost:9876/base/bower/angular/angular.min.js:40:478 
at Object.d [as get] (http://localhost:9876/base/bower/angular/angular.min.js:38:364) 
at Object.eval (eval at evaluate (unknown source), <anonymous>:1:11) 
at Object.InjectedScript._evaluateOn (<anonymous>:905:55) 
at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34) 
at Object.InjectedScript.evaluateOnCallFrame (<anonymous>:964:21) 

Моя служба не имеет зависимостей, поэтому я не знаю, почему это может Не создавайте его.

class CommandService{ 

    public getCommandStatus(): any[] { 
     return new Array<any>() 
    } 
} 

angular.module('app').factory('commandService', CommandService); 

ответ

2

Вы должны использовать unminified Угловые источники при диагностике проблем, как это производит человек считываемые сообщения об ошибках:

Provider «CommandService» должна вернуть значение из $ получить фабричный метод. http://errors.angularjs.org/1.4.3/ $ форсунка/UNDEF? P0 = CommandService

Ваш CommandService уже услуга, не завод функция для службы. Просто позвоните .service вместо .factory, и вы хорошо пойдете.

Если вы действительно хотите, потребители ваших услуг new это сами (странно, но хорошо), вы могли бы написать:

class CommandService { 
    constructor() { 
    console.log('all ok'); 
    } 
} 
function fn() { 
    return CommandService; 
} 

angular.module('app', []).factory('CommandService', fn); 
Смежные вопросы