在 karma 测试运行期间从编译中排除文件

问题描述 投票:0回答:5

我将 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) 版本更新到最新版本。

有人对这里可能发生的事情有任何想法吗?

谢谢

angular typescript karma-runner
5个回答
4
投票
也许你的路径不够精确。我们可以得到你的项目伪树视图吗?尤其是您要排除的文件的路径?

配置文件可能会是这样的:

"exclude": [ "someFolder/**/o3-test-harness.class.ts" ]
    

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" ] }

所以看起来像这样,运行单元测试后,这将排除排除部分中的文件。


0
投票
在文件中,

tsconfig.spec.json

您可以按如下方式添加排除数组,

"exclude": [ "node_modules", "dist", "**/tests/*.test.ts", "src/tests"

]

所以你的最终输出将如下


0
投票
尝试将排除文件路由添加到测试配置中的 angular.json 文件中 示例:

test: {... "codeCoverageExclude": ["src/your_rute_file/name_file.ts"], }
这对我有用


-1
投票
Karma 在

dist directory

 上运行测试。因此,如果您排除 
tesing directory
,它将不会进入您编译的 
dist directory

在文件中

tsconfig.json

只需添加以下代码

"exclude": [ "./testing" ]

编写这段代码应该可以解决您的问题。 让我知道这是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.