2016-04-06 15 views
1

Ich beginne mit Angular2 und testen: Jasmine & Karma. Ich schrieb ein paar geistige Gesundheit Tests, die gut funktioniert, aber wenn ich einen einfachen Standard-Injektor-Test versuchen, es fehlschlägt:Angular 2 Basistest schlägt fehl

using-injector.spec.ts 

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

Der Fehler, den ich in Karma sehen:

Failed: No provider for Token AppId! 
Error: DI Exception 
    at NoProviderError.BaseException [as constructor] (C:/Users/f 
ocuments/dev/node_modules/angular2/bundles/angular2.js:7587:21) ... 

Jeder Hinweis wäre sehr

geschätzt werden
+1

Haben Sie 'setTestProviders nennen (...)' wie in https://github.com/angular/ gezeigt eckig/blob/Meister/CHANGELOG.md # breaking-changes-6? –

+0

Wie definieren Sie APP_ID? –

+0

Haben Sie den Service importiert? Anstatt einen Injektor zu verwenden, können Sie einfach die neue Tastatur verwenden, um den Dienst zu instanziieren. – philoniare

Antwort

1

Ich würde APP_ID innerhalb der beforeEachProviders Funktion angeben.

beforeEachProviders(() => [ 
    APP_ID 
]); 

Dann sollten Sie in der Lage sein, es zu injizieren.

0

Importierte

import {setBaseTestProviders} from 'angular2/testing'; 
import { 
    TEST_BROWSER_PLATFORM_PROVIDERS, 
    TEST_BROWSER_APPLICATION_PROVIDERS 
} from 'angular2/platform/testing/browser'; 
setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS, 
        TEST_BROWSER_APPLICATION_PROVIDERS); 

in meinem Test und arbeitete. Insgesamt Ich denke, das Import in "Karma-Test-shim.js" sein sollte sehen: https://github.com/juliemr/ng2-test-seed