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

zlhcx6iw  于 2023-05-01  发布在  TypeScript
关注(0)|答案(2)|浏览(106)

我有一个Angular 8应用程序,我试图模拟一些子组件。
嘲笑本身就很好。但是,为了组织和可重用性,我想将模拟移出 。spec 文件并放入其自己的mock目录中,如下所示:

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没有在任何Angular 模块中声明”,尽管它是在testbed configure test模块中使用的:

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

我已经找到了堆栈溢出对“在更改时编译”的建议以及对tsconfig的相关更改。app.json for compileOnSave,但是除了在mock目录中创建一个假的ngModule之外,没有任何帮助,这看起来很愚蠢。
我该怎么解决这个问题?

6ojccjat

6ojccjat1#

虽然你是正确的,你不应该,正如你在你的答案中提到的,禁用Angular项目的所有这种类型的检查,这绝对是一个有效的用例来禁用测试模拟的检查。
这些警告来自代码检查(IntelliJ IDEA和WebStorm)。

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

1.将光标放在违规代码中(下划线)

  1. Alt + Enter
    1.选择检查
    1.“禁止上课”
    在本例中,这将添加注解:
// noinspection AngularMissingOrInvalidDeclarationInModule
jv2fixgn

jv2fixgn2#

转到 * 首选项 * → * 编辑器 * → * 检查 * → * 缺少或无效的组件、指令或管道 *。
虽然上面的内容在技术上是正确的,但它仍然感觉很笨拙,因为这些检查是有原因的。
A better way to implement a testing library for reuse can be found here

相关问题