Unit testing “如何修复”;无法读取null的注入器属性;角2中的虫子?

Unit testing “如何修复”;无法读取null的注入器属性;角2中的虫子?,unit-testing,angular,Unit Testing,Angular,描述在不推荐使用beforeachProviders函数后如何更新Angular 2 但是这样做之后,我得到了错误无法读取null的属性'injector' 我的测试比较基本: import { inject, addProviders } from '@angular/core/testing'; import { MyComponent } from './my.component'; describe('Foo', () => { beforeEach(() => {

描述在不推荐使用
beforeachProviders
函数后如何更新Angular 2

但是这样做之后,我得到了错误
无法读取null的属性'injector'

我的测试比较基本:

import { inject, addProviders } from '@angular/core/testing';
import { MyComponent } from './my.component';

describe('Foo', () => {
    beforeEach(() => {
        addProviders([{
            provide: MyComponent,
            useClass: MyComponent
        }]);
    });

    it('foo', inject([MyComponent], (e: MyComponent) => {
        expect(true).toEqual(true);
    }));
});

addProviders也被弃用,因为它支持TestBed

import { TestBed, async } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
import { MyComponent } from './my.component';

// This should only be called once.
TestBed.initTestEnvironment(
    BrowserDynamicTestingModule, platformBrowserDynamicTesting());

describe('Foo', () => {
    beforeEach(() => {
      TestBed.configureTestingModule({
        declarations: [MyComponent],
      });
      TestBed.compileComponents();
    });

    it('foo', async(() => {
        let fixture = TestBed.createComponent(MyComponent);
        fixture.detectChanges();
        expect(true).toEqual(true);
    }));
});

Angular2 RC5

我得到一个错误`无法设置基本提供程序,因为在我这样做时它已经被调用',但是当我将
initTestEnvironment
调用移动到
之前
(必须在每次
之后执行
测试台。如果您希望因此运行多个测试,请在
中重置测试环境
)。测试工作正常,尽管这种情况很奇怪。我做错了什么吗?在每次测试之前调用InitTestenEnvironment并在每次测试之后重置TestenEnvironment是可以的,但理想情况下,您只需在所有测试中调用init一次。网页包示例显示将其放入karma shim文件中。