2016-07-01 2 views
16

Ive gerade Angular2 von RC3 zu RC4 aktualisiert ...Wie beheben beforeEachProviders (auf RC4 veraltet)

import { 
    expect, it, iit, xit, 
    describe, ddescribe, xdescribe, 
    beforeEach, beforeEachProviders, withProviders, 
    async, inject 
} from '@angular/core/testing'; 

In meiner Unit-Test habe ich den folgenden Code ...

beforeEachProviders(() => [ 
    {provide: Router, useClass: MockRouter} 
]); 

Diese funktioniert gut, aber seit dem Umzug nach RC4 habe ich eine Verwarnungswarnung auf beforeEachProviders.

Wer weiß, was die neue Art der Dinge zu tun ist? Oder sollte ich beforeEachProviders von woanders anstelle von '@ angular/core/testing' importieren?

Antwort

20

Sie müssen addProvider von @ angular/core/testing importieren.

Statt:

beforeEachProviders(() => [ 
    {provide: Router, useClass: MockRouter} 
]); 

Sie werden dies tun wollen:

beforeEach(() => { 
    addProviders([ 
     {provide: Router, useClass: MockRouter} 
    ]) 
}); 

Quelle: RC4 Changelog

+1

Danke jemals so viel - Sie addProviders verwenden ist richtig - Ihre Nutzung bieten nicht erforderlich ist (und wahrscheinlich veraltet) . Ihr Hinweis auf das Änderungsprotokoll ist wichtig - vielen vielen Dank. So hilfreich bin ich sehr dankbar. Rettete mir so viel Zeit! – danday74

+1

provide() wurde veraltet, aber verwenden Sie stattdessen? – wholladay

+1

@wholladay Ein einfaches Objekt, siehe den Unterschied http://stackoverflow.com/review/suggested-edits/12924184 – estus

1

Hier ist ein vollständiges Beispiel für ein Fenster Referenzservice:

import { TestBed, inject } from '@angular/core/testing'; 
import { WindowRef } from './window-ref'; 

describe('WindowRef',() => { 
    let subject: WindowRef; 

    beforeEach(() => { 
    TestBed.configureTestingModule({ 
     providers: [ 
     WindowRef 
     ]}); 
    }); 

    beforeEach(inject([WindowRef], (windowRef: WindowRef) => { 
    subject = windowRef; 
    })); 

    it('should provide a way to access the native window object',() => { 
    expect(subject.nativeWindow).toBe(window); 
    }); 
}); 
Verwandte Themen