【问题标题】:Exclude file from compilation during karma test runs在业力测试运行期间从编译中排除文件
【发布时间】:2018-11-26 15:52:54
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 不应该 '.src/tsconfig.spec.json''./src/tsconfig.spec.json'

标签: angular typescript karma-runner


【解决方案1】:

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

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

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

【讨论】:

  • 嗨,请参阅我更新的问题,了解更多细节,这可能会有所帮助
【解决方案2】:

需要在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"
 ]
}

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

【讨论】:

  • 我已经试过了,我在原来的问题中也提到了这个
【解决方案3】:

在文件中,

tsconfig.spec.json

可以如下添加排除数组,

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

]

所以你的最终输出将如下所示

【讨论】:

  • 是的,您已完成此操作,但不包括未正确给出的文件路径。
  • 你建议的和我做的有什么不同?
【解决方案4】:

Karma 在dist directory 上运行测试。所以,如果你排除你的tesing directory,它不会进入你编译的dist directory

在文件中

tsconfig.json

只需添加以下代码

"exclude": [
    "./testing"
]

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

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多