17

我刚刚将 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”导入?

4

3 回答 3

21

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

代替:

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

你会想要这样做:

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

资料来源:RC4 变更日志

于 2016-07-01T03:03:41.097 回答
14

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

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

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

于 2016-12-12T18:52:14.570 回答
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);
  });
});
于 2017-07-24T21:57:52.743 回答