unit-testing - 类型错误 : Cannot read property 'injector' of null after upgrading to Angular 2. 0 最终

标签 unit-testing testing angular typescript angular2-testing

从 Angular 2 RC5 升级到 2.0 Final 后,我在运行测试时看到以下错误。我不确定问题是什么。

TypeError: Cannot read property 'injector' of null
    at TestBed._createCompilerAndModule (webpack:///Users/mraible/dev/ng2-demo/~/@angular/core/testing/test_bed.js:247:0 <- src/test.ts:20777:44)
    at TestBed._initIfNeeded (webpack:///Users/mraible/dev/ng2-demo/~/@angular/core/testing/test_bed.js:213:0 <- src/test.ts:20743:39)
    at TestBed.createComponent (webpack:///Users/mraible/dev/ng2-demo/~/@angular/core/testing/test_bed.js:297:0 <- src/test.ts:20827:14)

这是我的一项测试的示例:

import { MockSearchService } from '../shared/search/mocks/search.service';
import { EditComponent } from './edit.component';
import { TestBed } from '@angular/core/testing/test_bed';
import { SearchService } from '../shared/search/search.service';
import { MockRouter, MockActivatedRoute } from '../shared/search/mocks/routes';
import { ActivatedRoute, Router } from '@angular/router';
import { FormsModule } from '@angular/forms';

describe('Component: Edit', () => {
  let mockSearchService: MockSearchService;
  let mockActivatedRoute: MockActivatedRoute;
  let mockRouter: MockRouter;

  beforeEach(() => {
    mockSearchService = new MockSearchService();
    mockActivatedRoute = new MockActivatedRoute({'id': 1});
    mockRouter = new MockRouter();

    TestBed.configureTestingModule({
      declarations: [EditComponent],
      providers: [
        {provide: SearchService, useValue: mockSearchService},
        {provide: ActivatedRoute, useValue: mockActivatedRoute},
        {provide: Router, useValue: mockRouter}
      ],
      imports: [FormsModule]
    });
  });

  it('should fetch a single record', () => {
    const fixture = TestBed.createComponent(EditComponent);

    let person = {name: 'Emmanuel Sanders', address: {city: 'Denver'}};
    mockSearchService.setResponse(person);

    fixture.detectChanges();
    // verify service was called
    expect(mockSearchService.getByIdSpy).toHaveBeenCalledWith(1);

    // verify data was set on component when initialized
    let editComponent = fixture.debugElement.componentInstance;
    expect(editComponent.editAddress.city).toBe('Denver');

    // verify HTML renders as expected
    let compiled = fixture.debugElement.nativeElement;
    expect(compiled.querySelector('h3').innerHTML).toBe('Emmanuel Sanders');
  });
});

有关演示此问题的拉取请求,请参阅 GitHub:https://github.com/mraible/ng2-demo/pull/4

最佳答案

import { TestBed } from '@angular/core/testing/test_bed'; 更改为 import { TestBed } from '@angular/core/testing'; 已解决这个问题对我来说。

关于unit-testing - 类型错误 : Cannot read property 'injector' of null after upgrading to Angular 2. 0 最终,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39716262/

相关文章:

python - 重定向后测试页面内容不起作用

testing - 如何为基于 net/http 的代码编写集成测试?

scala - 如何让 SBT 仅重新运行失败的测试

django - 为什么模拟补丁仅在运行特定测试而不是整个测试套件时有效?

c++ - 在 Gmock 的 EXPECT_CALL 之前使用 ON_CALL 时的奇怪行为

python - 这个测试有意义吗?

javascript - 在模板中使用 Angular Reactive Forms .get() 方法会导致不必要的方法调用,如组件方法吗?

c# - asp.net 核心 mvc 导航不适用于 Angular 2

Angular 2 产品构建错误 : ERROR in Error: Illegal state: Could not load the summary for directive

swift - swift中的Quick框架中的describe和context有什么区别?