web-dev-qa-db-fra.com

Comment réparer beforeEachProviders (obsolète sur RC4)

Je viens de mettre à jour Angular2 de RC3 à RC4 ...

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

Dans mon test unitaire, j'ai le code suivant ...

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

Cela fonctionne bien, mais depuis le passage à RC4, un avertissement de désapprobation est émis sur beforeEachProviders.

Quelqu'un sait quelle est la nouvelle façon de faire? Ou devrais-je importer beforeEachProviders d'un autre endroit au lieu de '@ angular/core/testing'?

16
danday74

Vous devrez importer addProviders de @ angular/core/testing. 

Au lieu de:

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

Vous voudrez faire ceci:

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

Source: Changelog RC4

21
mifish

Après avoir examiné quelques autres documents, il semble que vous souhaitiez:

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

Source: https://angular.io/guide/dependency-injection

14
Tye2545

Voici un exemple complet, pour un service de référence 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);
  });
});
1
Steve Brush