在Angular CLI应用程序中使用Karma执行单元测试时找不到任何对象

时间:2017-02-27 13:28:14

标签: angular karma-runner

我使用Angular CLI设置了我的项目。我也通过“ng g component NAME”创建了我的组件。这也自动添加了一个测试类来创建我的单元测试(当然非常简洁)。

问题是即使我把它们保持在初始状态,我的测试也会失败。我想在实际编写任何测试之前测试一下。然而,测试失败可怕。没有一行执行得很好。

> ng test

'app-some-selector' is not a known element:
1. If 'app-some-selector' is an Angular component, then verify that it is part of this module.

或者例如

The pipe 'myPipe' could not be found 

针对特定组件中的每个对象抛出上述错误。如果通过其选择器使用另一个组件,则无法找到相应的组件,如果通过依赖注入使用http之类的服务,则编译器会声明没有提供者,依此类推。

我的项目与ng serve顺便说一下运行得很好。

1 个答案:

答案 0 :(得分:2)

当您通过angular-cli创建组件时,它会为您创建

it('should create', () => {
    expect(component).toBeTruthy();
});

第一个测试尝试创建一个组件,如果你添加一个dependancie,其他组件例如,它就会掉落。

要通过此测试,您需要更新在beforeEach函数中在测试类中创建组件的方式:

beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ myComponent ],
      providers: [myService]
    })
    .compileComponents();
}));

如果我在组件测试依赖注入中添加服务myService。像这样,您可以更轻松地将模拟对象作为myService来测试您的组件。