我在Karma中使用angular-cli,在运行单元测试时需要从编译中排除特定文件。
有问题的文件在下面的错误中被引用,该文件由于不存在依赖于该文件的模块而无法编译。
此文件供存在模块的其他项目使用,因此可以很好地编译,仅在此特定项目中不需要编译,但仍需要导出。
我的目录结构如下:
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"
]
但这没什么区别。
然后我想知道业力是否肯定在使用我的tsconfig.spec.json文件,因此我添加了以下内容:
karmaTypescriptConfig : {
tsconfig: '.src/tsconfig.spec.json',
}
但是,仍然没有区别,在准备运行测试时,编译器会占用我的测试文件夹。
我不确定还有什么尝试,我已经将TypeScript(3.1.6)和Karma(3.1.1)的版本更新为最新版本。
有人对这里可能发生的事情有任何想法吗?
谢谢
答案 0 :(得分:2)
也许您的路径不够精确。我们能否拥有您的项目伪树视图?尤其是要排除的文件的路径?
配置文件可能期望如下所示:
"exclude": [
"someFolder/**/o3-test-harness.class.ts"
]
答案 1 :(得分:0)
您需要在tsconfig.spec.json文件中添加需要删除的文件
{
"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"
]
}
所以看起来像这样,在运行单元测试之后,这将排除在exclude部分中的文件。
答案 2 :(得分:0)
在文件中,
tsconfig.spec.json
您可以按以下方式添加排除数组,
"exclude": [
"node_modules",
"dist",
"**/tests/*.test.ts",
"src/tests"
]
所以您的最终输出将如下所示
答案 3 :(得分:0)
业力在dist directory
上运行测试。因此,如果您排除tesing directory
,它将不会进入已编译的dist directory
。
在文件
中tsconfig.json
只需添加以下代码
"exclude": [
"./testing"
]
编写此代码应该可以解决您的问题。 让我知道这是否有效。