2016-07-01 5 views
16

Ive как раз модернизировал Angular2 от RC3 до RC4 ...Как исправить beforeEachProviders (устаревшее на RC4)

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

В моем модульном тестировании у меня есть следующий код ...

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

Это отлично работает, но с момента перехода на RC4 у меня есть предупреждение об отказе от beforeEachProviders.

Кто-нибудь знает, что нового делает? Или мне нужно импортировать beforeEachProviders из другого места вместо '@ angular/core/testing'?

ответ

20

Вам нужно будет импортировать addProviders из @ angular/core/testing.

Вместо:

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

Вы хотите сделать это:

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

Источник: RC4 Changelog

+1

Спасибо очень много - вы использование addProviders правильно - ваше использование обеспечения не является необходимым (и, вероятно, не рекомендуется) , Ваша ссылка на журнал изменений очень важна - большое спасибо. Так что я очень благодарен. Спасло меня так много времени! – danday74

+1

Предоставить() устарел, но вместо этого вы используете? – wholladay

+1

@wholladay Простой объект, см. Разницу http://stackoverflow.com/review/spected-edits/12924184 – estus

1

Вот полный пример, для эталонного окна обслуживания:

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