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文件中。