如何在 Angular 6 中忽略生产构建中的规范文件和模拟文件

Ric*_*rdo 5 testing angular

我正在尝试在生产中编译我的 angular 应用程序,但收到此错误:

无法确定 /src/testing/translate.service.spec.ts 中 TranslateMockPipe 类的模块!将 TranslateMockPipe 添加到 NgModule 以修复它。

这个TranslateMockPipe类是我声明的一个公共类,我在所有测试文件中使用它以避免在所有测试用例中重复同一行代码

类的代码:

@Pipe({ name: "translate" })
class TranslateMockPipe {
    transform = (ss) => ss
}
Run Code Online (Sandbox Code Playgroud)

我在我的测试中使用它是这样的:

TestBed.configureTestingModule({
            declarations: [
                DemoComponent,
                TranslateMockPipe
            ]
})
Run Code Online (Sandbox Code Playgroud)

如果我运行项目一切顺利,我的测试通过没有问题但在我尝试编译生产时失败

我如何忽略这种用于生产构建的假类?

Luc*_*cho 5

您可以在这张上阅读它,但最简单的方法应该是:

  • 添加一个路径,你有你的测试实用程序,例如“./app/shared/tests/”,并在你的 tsconfig.json 添加:

    "exclude": [
      "./app/shared/tests/*.ts"
    ]
    
    Run Code Online (Sandbox Code Playgroud)

或者

  • 创建一个不会导入到除 Testbed 模块之外的任何其他模块的模块,将其用于测试目的,包括模拟、存根等...