web-dev-qa-db-ja.com

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の廃止に関する警告が出ます。

誰もが物事の新しい方法が何であるか知っていますか?または、「@ angular/core/testing」ではなく、どこかからbeforeEachProvidersをインポートする必要がありますか?

16
danday74

@ angular/core/testingからaddProvidersをインポートする必要があります。

の代わりに:

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

あなたはこれをしたいと思うでしょう:

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

出典: RC4 Changelog

21
mifish

他のいくつかのドキュメントを確認した後、あなたが望むように見えます:

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

出典: https://angular.io/guide/dependency-injection

14
Tye2545

以下は、ウィンドウ参照サービスの完全な例です。

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