2016-04-14 3 views
2

У меня есть единичный тест, который проверяет APP_ID приложения как фиксированное значение. Проблема в том, что я не знаю, как установить APP_ID, чтобы он не генерировался случайным образом.Нет провайдера для Token AppId

документация на веб-сайте команды Angular2 является полезным достаточно, но я не уверен, если я правильно интерпретировать его:

Если вам необходимо, чтобы избежать случайно сгенерированного значение, которое будет использоваться в качестве идентификатора приложения , вы можете предоставить настраиваемое значение через поставщика DI, настраивающего корневой инжектор, используя этот токен.

Так ли это означает, что я добавлю его в качестве поставщика в загрузочном устройстве моего приложения?

bootstrap(App, [ 
    provide(APP_ID, {name: 'MyApp'}) 
]); 

Я сомневаюсь, что он удаленно закрыт. Кто-нибудь еще понял, как установить APP_ID или что он даже используется?

injector.spec.ts

import { 
it, 
inject, 
injectAsync, 
beforeEachProviders, 
TestComponentBuilder 
} from 'angular2/testing'; 
import {APP_ID} from 'angular2/core'; 


describe('default test injector',() => { 
    it('should provide default id', inject([APP_ID], (id) => { 
    expect(id).toBe('MyApp'); 
    })); 
}); 

ответ

3

В тесте

describe('default test injector',() => { 
    beforeEachProviders(() => [provide(APP_ID, {useValue: 'MyApp'})]); 
    it('should provide default id', inject([APP_ID], (id) => { 
    expect(id).toBe('MyApp'); 
    })); 
}); 

для вашего реального приложения, которое вы бы написать так

bootstrap(App, [ 
    provide(APP_ID, {useValue: 'MyApp'}) 
]); 
+0

Ницца, хорошо знать, я не был Не слишком далеко. Можно ли импортировать файл, где происходит перезагрузка, вместо того, чтобы дублировать 'обеспечить (APP_ID, {useValue: '...'})' часть в 'beforeEachProviders'? – BrianRT

+0

См. Http://stackoverflow.com/a/36354220/217408, как создавать поставщиков и использовать их повторно. –