指令不是测试中的已知元素

时间:2018-04-15 15:14:24

标签: angular angular-cli karma-jasmine

结构就像这样......它应该成为一个npm模块...

.
./angular.json
./karma.conf.js
./package.json
./tsconfig.json
./demo
./demo/index.html
./demo/main.ts
./demo/test.ts
./demo/tsconfig.app.json
./demo/tsconfig.spec.json
./demo/app
./demo/app.component.html
./demo/app.component.ts
./demo/app.component.spec.ts
./demo/app.module.ts

然后是lib代码

./lib/index.ts
./lib/src/libname.module.ts
./lib/src/libname/libname.component.html
./lib/src/libname/libname.component.ts

该组件适用于ng serve

如果我使用ng test运行测试,我会看到directivename is not a known element的模板解析错误。

我尝试将lib文件添加到tsconfig.spec.json中的files数组中 没有成功。

唯一工作是,我在app.component.spec.ts中导入 lib中的所有组件和我的lib 使用的所有组件并添加他们到TestBed声明。

但是,我不得不像这样自己添加所有组件进行测试。

我必须错过一些东西。你知道吗?

1 个答案:

答案 0 :(得分:0)

我找到了它; - )

而不是

// refine the test module by declaring the test component
TestBed.configureTestingModule({
  declarations: [NavBarComponent, NavBarChildComponent],
  providers: [
    {provide: Location, useValue: location}
    ]
});

我使用

// refine the test module by declaring the test component
TestBed.configureTestingModule({
  declarations: [],
  imports: [NavBarModule],
  providers: [
    {provide: Location, useValue: location}
    ]
});