如何解决/抑制 IntelliJ 警告,即模拟类未在任何 Angular 模块中声明?



我有一个 Angular 8 应用程序,我正在尝试模拟一些子组件。

嘲笑本身很好。但是,为了组织和可重用性,我想将模拟从.spec文件中移出并移动到它自己的模拟目录中,如下所示:

myApp
|-- src
|-- app
|-- app.component.spec.ts
|-- mocks
|-- material
|-- mat-drawer-container.ts

MaterialDrawerContainer 的模拟看起来像这样:

import {Component, Input} from '@angular/core';
@Component({
selector: 'mat-drawer-container',
template: ''
})
export class MockMatDrawerContainer {
@Input() mode;
}

测试本身仍按预期工作。但令人讨厌的是,在 MockMatDrawerContainer 下面有一条很大的旧红线,抱怨"MockMatDrawerContainer 没有在任何角度模块中声明",即使它在测试平台配置测试模块中使用,如下所示:

TestBed.configureTestingModule(
{declarations: [MockMatDrawerContainer]}).compileComponents;

我找到了"编译更改"的堆栈溢出建议以及对 compileOnSave 的 tsconfig.app.json 的相关更改,但除了在模拟目录中创建一个虚假的 ngModule 之外,没有任何帮助,这看起来很愚蠢。

我该如何解决这个问题?

虽然您是正确的,正如您在答案中提到的,您不应该为 Angular 项目禁用所有此类检查,但禁用测试模拟检查绝对是一个有效的用例。

这些警告来自代码检查(IntelliJ IDEA和WebStorm(。

要禁用任何检查(对于任何类型的项目(:

  1. 将光标放在有问题的代码中(带下划线(
  2. Alt+Enter
  3. 选择检查
  4. "为阶级压制">

在这种情况下,这将添加注释:

// noinspection AngularMissingOrInvalidDeclarationInModule

转到"首选项"→"编辑器"→"检查"→缺少或无效的组件、指令或管道

虽然上述内容在技术上是正确的,但由于这些检查是有原因的,因此仍然感觉很笨拙。

可以在此处找到实现测试库以进行重用的更好方法。

最新更新