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

Я только что обновил Angular2 от RC3 до RC4...

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

В моем unit test у меня есть следующий код...

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

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

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

Ответы

Ответ 1

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

Вместо:

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

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

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

Источник: RC4 Changelog

Ответ 2

После просмотра нескольких других документов вам будет необходимо:

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

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

Ответ 3

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

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