如何修复beforeEachProviders(在RC4上弃用)

时间:2016-07-01 02:22:51

标签: unit-testing angular jasmine angular2-testing

我刚刚将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'?

3 个答案:

答案 0 :(得分:21)

您需要从@ angular / core / testing导入addProviders。

而不是:

class Comments extends Component {
    render() {
        return (
            <div></div>
        );
    }
}

你想要这样做:

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

来源:RC4 Changelog

答案 1 :(得分:14)

在查看了一些其他文档后,您似乎想要:

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

来源:https://angular.io/guide/dependency-injection

答案 2 :(得分:1)

这是一个完整的示例,用于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);
  });
});