2016-07-01 29 views
16

Ive appena aggiornato Angular2 dalla RC3 alla RC4 ...Come risolvere beforeEachProviders (deprecate su RC4)

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

Nel mio test di unità ho il seguente codice ...

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

Questo funziona bene ma da quando mi sono trasferito su RC4 ho un avviso di deprecazione su beforeEachProviders.

Qualcuno sa qual è il nuovo modo di fare le cose? O dovrei importare beforeEachProviders da qualche altra parte invece di '@ angular/core/testing'?

risposta

20

È necessario importare addProviders da @ angular/core/testing.

Invece di:

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

si vorrà fare questo:

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

Fonte: RC4 Changelog

+1

Grazie mai così tanto - si utilizza di addProviders è corretta - l'utilizzo di fornire non è necessario (e probabilmente deprecato) . Il tuo riferimento al registro delle modifiche è essenziale - molte molte grazie. Così utile, sono estremamente grato Mi ha salvato così tanto tempo! – danday74

+1

provide() è stato deprecato, ma si usa invece? – wholladay

+1

@wholladay Un oggetto semplice, vedere la differenza http://stackoverflow.com/review/suggested-edits/12924184 – estus

1

Ecco un esempio completo, per un servizio di riferimento Finestra:

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