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

时间:2018-11-26 15:52:54

标签: angular typescript karma-runner

我在Karma中使用angular-cli,在运行单元测试时需要从编译中排除特定文件。

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

enter image description here

此文件供存在模块的其他项目使用,因此可以很好地编译,仅在此特定项目中不需要编译,但仍需要导出。

我的目录结构如下:

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)的版本更新为最新版本。

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

谢谢

4 个答案:

答案 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"

]

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

enter image description here

答案 3 :(得分:0)

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

在文件

  

tsconfig.json

只需添加以下代码

"exclude": [
    "./testing"
]

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