【问题标题】:How to fix beforeEachProviders (deprecated on RC4)如何修复 beforeEachProviders(RC4 已弃用)
【发布时间】:2016-11-03 07:31:49
【问题描述】:

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

【问题讨论】:

    标签: angular typescript unit-testing jasmine angular2-testing


    【解决方案1】:

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

    代替:

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

    你会想要这样做:

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

    来源:RC4 Changelog

    【讨论】:

    • 非常感谢您-您使用 addProviders 是正确的-您没有必要使用提供(并且可能已弃用)。您对更改日志的参考是必不可少的 - 非常感谢。非常有帮助,我非常感谢。为我节省了很多时间!
    • provide() 已被弃用,但您是否改用?
    • 看来 addProviders 在 rc.6 中消失了。还不确定要改用什么。
    • 如何在 rc.6 中修复它?因为 addProvider 已从 @angular/core/testing 中删除。
    • 您需要改用 TestBed.configureTestingModule。这是example
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-19
        • 1970-01-01
        • 2022-10-22
        • 2020-02-02
        • 1970-01-01
        • 2015-12-25
        • 1970-01-01
        相关资源
        最近更新 更多