如何在Angular 6的生产版本中忽略规格文件和模拟文件

时间:2018-11-29 21:11:08

标签: angular testing

我正在尝试在生产环境中编译我的角度应用程序,并且收到此错误:

  

无法确定类别TranslateMockPipe中的模块   /src/testing/translate.service.spec.ts!将TranslateMockPipe添加到   NgModule对其进行修复。

这个TranslateMockPipe类是我声明的通用类,为了避免在所有测试用例中重复同一行代码,我在所有测试文件中都使用了该类。

该类的代码:

@Pipe({ name: "translate" })
class TranslateMockPipe {
    transform = (ss) => ss
}

我正在像这样在测试中使用它:

TestBed.configureTestingModule({
            declarations: [
                DemoComponent,
                TranslateMockPipe
            ]
})

如果我运行项目,一切都会顺利进行,并且测试可以顺利通过,但是在尝试进行生产编译时会失败

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

2 个答案:

答案 0 :(得分:0)

您可以在此ticket上进行阅读,但最简单的方法应该是:

  • 添加一条测试实用程序的路径,例如“ ./app/shared/tests/”,然后在您的tsconfig.json中添加:

    "exclude": [
      "./app/shared/tests/*.ts"
    ]
    
  • 创建一个模块,该模块除了用于测试目的的Testbed模块外,不会导入其他任何模块,并且包含模拟,存根等...

答案 1 :(得分:0)

如果您将Ionic Framework与Angular一起使用,则需要更新exclude中的tsconfig.app.json部分,以便它列出错误消息中显示的文件(或者很可能是所有类似名称的文件)

错误:

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

tsconfig.app.json

...

 "exclude": [
   "src/testing/*.service.spec.ts"
 ]

...