2016-07-01 9 views
16

Ive tylko zmodernizowane Angular2 z RC3 do RC4 ...Jak naprawić beforeEachProviders (przestarzałe na RC4)

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

W moim badanej jednostki Mam następujący kod ...

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

ten działa dobrze, ale po przejściu na RC4 mam ostrzeżenie o wycofaniu na beforeEachProviders.

Ktoś wie, co to nowy sposób robienia rzeczy? A może powinienem zaimportować beforeEachProviders z innego miejsca zamiast "@ angle/core/testing"?

Odpowiedz

20

Będziesz musiał zaimportować addProviders z @ angle/core/testing.

Zamiast:

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

Będziemy chcieli, aby to zrobić:

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

Źródło: RC4 Changelog

+1

Dziękuję kiedykolwiek tyle - korzystania z addProviders jest poprawna - korzystanie z zapewniać nie jest konieczne (i prawdopodobnie przestarzałe) . Twoje odniesienie do dziennika zmian jest niezbędne - wiele podziękowań. Tak pomocny jestem niezwykle wdzięczny. Zaoszczędził mi tyle czasu! – danday74

+1

Funkcja provide() została uznana za przestarzałą, ale zamiast tego używasz jej? – wholladay

+1

@wholladay Prosty obiekt, zobacz różnicę http://stackoverflow.com/review/suggested-edits/12924184 – estus

1

Oto pełna przykładów, za usługę odniesienia okno:

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); 
    }); 
});