迁移到 Angular 15 后,上下文从 test.ts 中删除

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

在我们的项目中,为了减少运行测试的数量,并在开发过程中仅针对特定文件运行特定测试,我们使用我们自己的脚本和这种技术:

然而,在迁移到 Angular 15 之后,这个“上下文”内容已从 test.ts 文件中删除。

有没有办法在 Angular 15 中仍然使用相同的技术?

我试图将“上下文”返回到 test.ts 但没有成功。

angular karma-jasmine
4个回答
3
投票

test.ts文件不再由angular生成,用于链接文件的属性

main
在angular.json中不再允许,您可以使用angular.json中的include属性添加模式或文件名

"test": {
  ...
  "options": {
    "include": [
      "**/app.component.spec.ts"
    ]
    ...
  }
}

2
投票

简单的解决方案:只需删除对
require.context

的调用

我刚刚遇到了同样的问题,将应用程序从 Angular 14 转换为 15,结果证明解决方案更简单:只需删除

src/test.ts
底部的两行。不再需要调用
require.context()

我以前有

const context = require.context("./", true, /\.spec\.ts$/);
context.keys().forEach(context);

src/test.ts
的末尾,但现在我删除了这两行,我的测试都像以前使用 Angular 14 一样运行。

我找不到适合此更改的文档(这就是我首先提出这个问题的原因)但我的假设是 Karma 现在会自动找到所有

*.spec.ts
文件,我们不再需要指示它这样做。

使用
"include"

缩小测试套件

"include"
/
"test":
下添加的
"options":
属性仅在您想限制要运行的规范文件列表时才需要。

所以,根据我的测试,像这样配置

angular.json

   "test": {
     "options": {
        "include": ["**/*.spec.ts"],
        ...
     },
     ...

或没有

"include"
,所有规格文件都被执行。

但是像这样配置

angular.json

   "test": {
     "options": {
        "include": ["**/app.component.spec.ts"],
        ...
     },
     ...

只有规格文件调用

app.component.spec.ts
实际得到锻炼。

我不知道你为什么要限制执行哪些规范文件,但我认为值得在这里记录下来以了解发生了什么。


1
投票

因为这些是茉莉花测试,在开发过程中运行特定测试的另一种方法是强制只运行那些测试:

  1. describe(…)
    更改为
    fdescribe(…)
    (和/或
    it(…)
    fit(…)
    )以获取您正在处理的特定规格。只有这些会运行。
  2. 让他们工作。
  3. fdescribe(…)
    /
    fit(…)
    变回
    describe(…)
    /
    it(…)
    。所有规格将再次运行。

其他测试框架可能有类似的功能。

注意:同样,规格可以包含在xdescribe(…)

xit(…)
中。
    


0
投票

import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; // First, initialize the Angular testing environment. getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());

在我使用的angular.json中:

"main": "projects/mijn-svb/src/test.ts", "polyfills": [ "zone.js", "zone.js/testing" ], "karmaConfig": "projects/mijn-svb/karma.conf.js",

不要忘记将 test.ts 添加到您的 tsconfig.spec.json

"files": [ "src/test.ts" ],

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