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

min*_*rse 6 typescript karma-runner angular

我正在使用带有Karma的angular-cli,我需要在运行单元测试时排除特定文件的编译.

有问题的文件在下面的错误中被引用,由于模块不存在而无法编译它所依赖的文件.

在此输入图像描述

该文件由模块将出现的其他项目使用,因此编译正常,它只是在这个特定项目中它不需要编译但仍需要导出.

我的目录结构如下:

index.ts
    - /src
    - /testing
Run Code Online (Sandbox Code Playgroud)

在我的index.ts文件中,我有一个导出:

export * from './src/core';
Run Code Online (Sandbox Code Playgroud)

我的testing文件夹下的TS源文件被编译器拾取,我不确定为什么因为我没有在我的src文件夹下的文件或其他任何地方导入该文件夹下的任何文件.

我想阻止编译器完全拿起我的测试文件夹,但我不能让它忽略它.

我正在使用angular-cli,在我的.angular-cli.json文件中我有这些行:

"tsconfig": "tsconfig.json",
"testTsconfig": "tsconfig.spec.json"
Run Code Online (Sandbox Code Playgroud)

这两个文件都位于我的src文件夹下,我尝试将一些排除模式添加到我的tsconfig.spec.json中,如下所示:

"exclude": [
        "../testing",
        "testing"
    ]
Run Code Online (Sandbox Code Playgroud)

但这没有任何区别.

然后我想知道业力是否肯定使用我的tsconfig.spec.json文件,所以我添加了以下内容:

 karmaTypescriptConfig : {
        tsconfig: '.src/tsconfig.spec.json',
    }
Run Code Online (Sandbox Code Playgroud)

但同样,仍然没有区别,我的测试文件夹在准备运行我的测试时被编译器拾取.

我不确定还有什么可以尝试,我已经将我的TypeScript(3.1.6)和Karma(3.1.1)版本更新到最新版本.

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

谢谢

rgu*_*rin 4

也许你的路径不够精确。我们可以得到你的项目伪树视图吗?尤其是您要排除的文件的路径?

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

"exclude": [
        "someFolder/**/o3-test-harness.class.ts"
    ]
Run Code Online (Sandbox Code Playgroud)