我将 angular-cli 与 Karma 结合使用,并且在运行单元测试时需要排除特定文件的编译。
下面的错误中引用了有问题的文件,由于它所依赖的模块不存在,因此无法编译该文件。
此文件由该模块存在的其他项目使用,因此编译良好,只是在这个特定项目中,它不需要编译,但仍需要导出。
我的目录结构如下:
index.ts
- /src
- /testing
在我的index.ts 文件中,我有一个导出:
export * from './src/core';
我的 testing
文件夹下的 TS 源文件被编译器拾取,我不确定为什么,因为我没有将此文件夹下的任何文件导入我的
src
文件夹下的文件或我所知的其他任何地方。我想阻止编译器完全拾取我的测试文件夹,但我无法让它忽略它。
我正在使用 angular-cli,在我的 .angular-cli.json 文件中我有这些行:
"tsconfig": "tsconfig.json",
"testTsconfig": "tsconfig.spec.json"
这两个文件都位于我的
src
文件夹下,我尝试向我的 tsconfig.spec.json 添加一些排除模式,如下所示:
"exclude": [
"../testing",
"testing"
]
但这没有什么区别。
然后我想知道 karma 是否确实使用了我的 tsconfig.spec.json 文件,因此我添加了以下内容:
karmaTypescriptConfig : {
tsconfig: '.src/tsconfig.spec.json',
}
但是,仍然没有什么区别,在准备运行测试时,编译器会拾取我的测试文件夹。
我不确定还可以尝试什么,我已将 TypeScript(3.1.6) 和 Karma(3.1.1) 版本更新到最新版本。
有人对这里可能发生的事情有任何想法吗?
谢谢
配置文件可能会是这样的:
"exclude": [
"someFolder/**/o3-test-harness.class.ts"
]
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"types": [
"jasmine",
"node"
]
},
"files": [
"test.ts",
"polyfills.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
],
"exclude": [
"yourdirectory to file/**/file that does not need to compile in testing"
]
}
所以看起来像这样,运行单元测试后,这将排除排除部分中的文件。
test: {...
"codeCoverageExclude": ["src/your_rute_file/name_file.ts"],
}
这对我有用
dist directory
上运行测试。因此,如果您排除
tesing directory
,它将不会进入您编译的
dist directory
。在文件中
tsconfig.json只需添加以下代码
"exclude": [
"./testing"
]
编写这段代码应该可以解决您的问题。 让我知道这是否有效。