“导入类型”导致单元测试失败

时间:2021-05-17 15:33:50

标签: javascript angular typescript unit-testing storybook

我有两个组件看起来像这样:

父组件

@Component({
  template: '',
  providers: [
    { provide: PARENT_COMPONENT, useExisting: forwardRef(() => ParentComponent) }
  ]
})
export class ParentComponent { }

子组件

@Component({
  template: ''
})
export class MyComponent {

  constructor(
    @Inject(PARENT_COMPONENT) private readonly parentComponent: ParentComponent
  ){}

}

注入令牌:

export const PARENT_COMPONENT = new InjectionToken<ParentComponent>('ParentComponentToken');

在子组件中,当我执行这样的导入时:

import type { ParentComponent } from '../parent.component';

我的单元测试全部中断并抛出以下错误:

<块引用>

ReferenceError: ParentComponent 未定义

但是,我的故事书可以正常工作,组件也可以正常工作。

如果我通过删除 type 来更改导入,它看起来像这样:

import { ParentComponent } from '../parent.component';

然后故事书不起作用,但单元测试起作用。为什么这会给我带来问题?我该如何解决?

如果我将构造函数更改为使用 any 而不是 ParentComponent,单元测试和故事书都可以工作。但是,我真的不想这样做,因为代码不是强类型的。

0 个答案:

没有答案