当我尝试使用ng test
运行以下测试时,它会显示以下错误。
import { TestBed, inject } from '@angular/core/testing';
export class Foo {
}
describe('Foo', () => {
let foo: Foo;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
Foo
]
}).compileComponents();
foo = TestBed.createComponent(Foo).componentInstance;
});
it('should be created', () => {
expect(foo).toBeTruthy();
});
});
Error: Illegal state: Could not load the summary for directive Foo.
为什么会发生这种情况?如何让它运行?
答案 0 :(得分:0)
您似乎忘记了@Component
注释。试试这样:
@Component({
template: "<div></div>"
})
class Foo {
}
当然你必须导入Component
类:
import { Component } from '@angular/core';
PS:我认为您不需要从测试模块中导出Foo
类。
答案 1 :(得分:0)
我有完全相同的例外,可以通过将 foo 添加到声明部分来修复它:
TestBed.configureTestingModule({
providers: [
Foo
],
declarations: [
Foo
]
}).compileComponents();
答案 2 :(得分:0)
与@ lex82一样,你需要添加@Component
,就像提到的@marco birchler一样,你需要将Foo
添加到declarations
列表中。
你可以编译它,但这并不是真的需要
您可以删除提供商列表,因为Foo
是一个组件
import { TestBed, inject } from '@angular/core/testing';
import { Component } from '@angular/core';
@Component({template: '<div></div>'})
export class Foo { }
describe('Foo', () => {
let foo: Foo;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [Foo]
});
foo = TestBed.createComponent(Foo).componentInstance;
});
it('should be created', () => {
expect(foo).toBeTruthy();
});
});