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

dan*_*y74 16 unit-testing jasmine angular2-testing angular

我刚刚将Angular2从RC3升级到RC4 ......

import {
  expect, it, iit, xit,
  describe, ddescribe, xdescribe,
  beforeEach, beforeEachProviders, withProviders,
  async, inject
} from '@angular/core/testing';
Run Code Online (Sandbox Code Playgroud)

在我的单元测试中,我有以下代码......

beforeEachProviders(() => [
    {provide: Router, useClass: MockRouter}
]);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但自从转到RC4后,我有一个弃用警告beforeEachProviders.

任何人都知道新的做事方式是什么?或者我应该beforeEachProviders从其他地方导入而不是'@ angular/core/testing'?

mif*_*ish 21

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

代替:

beforeEachProviders(() => [
    {provide: Router, useClass: MockRouter}
]);
Run Code Online (Sandbox Code Playgroud)

你会想要这样做:

beforeEach(() => {
    addProviders([
        {provide: Router, useClass: MockRouter}
    ])
});
Run Code Online (Sandbox Code Playgroud)

资料来源:RC4 Changelog

  • 似乎addProviders在rc.6时已经消失了.不确定要使用什么. (4认同)
  • 您需要使用TestBed.configureTestingModule.这是一个[例子](http://stackoverflow.com/questions/38914457/angular-2-testbed-with-mocks) (3认同)
  • 如何在rc.6中修复它?因为@ angular/core/testing删除了addProvider. (2认同)

Tye*_*545 14

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

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

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