Как исправить beforeEachProviders (устарело в RC4)

Я только что обновил Angular2 с RC3 до 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»?


person danday74    schedule 01.07.2016    source источник


Ответы (3)


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

Вместо:

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

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

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

Источник: Журнал изменений RC4

person mifish    schedule 01.07.2016
comment
Большое вам спасибо - вы используете addProviders правильно - ваше использование Provide не требуется (и, вероятно, устарело). Ваша ссылка на журнал изменений очень важна - большое спасибо. Так полезно, я очень благодарен. Сэкономил мне столько времени! - person danday74; 01.07.2016
comment
Provide() устарела, но используете ли вы вместо этого? - person wholladay; 06.07.2016
comment
@wolladay Простой объект, посмотрите разницу stackoverflow.com/review/suggested-edits/12924184 - person Estus Flask; 08.07.2016
comment
Похоже, что addProviders больше не существует в версии rc.6. Пока не уверен, что использовать вместо этого. - person Josh Werts; 01.09.2016
comment
Как это исправить в rc.6? потому что addProvider был удален из @angular/core/testing. - person ljofre; 10.09.2016
comment
Вместо этого вам нужно использовать TestBed.configureTestingModule. Вот пример - person mifish; 14.09.2016

Изучив несколько других документов, вы, похоже, хотите:

beforeEach(() => TestBed.configureTestingModule({
        providers: [
            { provide: Service, useClass: MockService }
        ]})
    );

Источник: https://angular.io/guide/dependency-injection

person Tye2545    schedule 12.12.2016

Вот полный пример для справочной службы Windows:

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);
  });
});
person Steve Brush    schedule 24.07.2017