【问题标题】:Jest tests run through CLI but fail through Visual Studio 2019 Test ExplorerJest 测试通过 CLI 运行,但通过 Visual Studio 2019 测试资源管理器失败
【发布时间】:2022-01-06 01:36:00
【问题描述】:

我在 Node.Js Typescript 项目中将 Jest 与 Visual Studio 2019 一起使用,并且发生了一些我不明白的事情,我将不胜感激,以便我了解正在发生的事情。

我在 Visual Studio 的 Node.js 项目中设置了 Jest。 npm 包 jest、ts-jest 和 jest-editor-support 已安装。 Typescript 文件在 VS 2019 中成功编译。

当我从命令行使用 Jest 时,所有测试都运行良好,无论是 .ts 文件中的测试还是编译后的 .js 文件中的测试,都与我在 tsconfig.json 中设置的目标版本无关。没问题。

然而,当我使用 Visual Studio 2019 测试资源管理器时,有两件奇怪的事情:

  1. 如果目标版本低于 tsconfig.json 中的“ES6”,则构建 失败了,我看到巴比伦解析器(由 jest-editor-support) 在 foreachmap 上引发解析器错误 声明。

  2. 即使使用“ES6”或更高版本的目标版本,当我使用 Jest 的 .each 函数,包含这些函数的测试不运行 正确。它们显示为“失败”,但在测试详细信息中 摘要窗口,没有其他输出的链接。

由于 Jest 从命令行运行时没有问题,这意味着当测试通过 Visual Studio 2019 的测试资源管理器重新运行时会出现一些不同的情况。如何让测试在测试资源管理器中以相同的方式成功运行? (没有明显发生的绕道巴比伦)。我正在寻找测试资源管理器中失败的测试运行的解决方案,以及了解正在发生的事情。我对 Jest 还很陌生。

(顺便说一句,安装了 Jest / Typescript 的其他项目类型也会出现同样的问题)

【问题讨论】:

  • 您找到解决方案了吗?我也有同样的问题
  • @Timmo 刚刚将包括 TS 和 Jest 在内的所有软件包升级到最新版本。不幸的是,问题仍然存在。
  • 我对投反对票的原因很感兴趣,因为经过大量研究和努力,我真诚地提出了一个问题。
  • 有类似问题,但不是 Node.js 项目。只是在 cmd 中通过并在测试资源管理器中(总是)失败的 asp net core proj 中的一个简单测试。就我而言,问题出在测试名称上-我使用了西里尔字母,重命名后一切正常。我很确定你用英文命名,但是,....谁知道呢。

标签: jestjs ts-jest


【解决方案1】:

对我来说,这是因为当测试资源管理器运行 jest 测试时,即使 jest.config.ts 位于根目录的同一目录中,它也无法找到配置。所以解决方案是将开玩笑的配置移动到我的package.json

这是我最初的 package.json:

{
  "name": "stackoverflow.tests.typescript",
  "scripts": {
    "test": "jest"
  },
  "devDependencies": {
    "@types/jest": "^27.0.3",
    "@types/jquery": "^3.5.9",
    "jest": "^27.4.3",
    "jest-editor-support": "^30.0.2",
    "ts-jest": "^27.0.7",
    "ts-node": "^10.4.0",
    "typescript": "^4.5.2"
  }
}

所以当我 cd 到我的项目目录并运行 npm run testnpm test 时效果很好。但是在 Visual Studio 测试资源管理器中运行测试总是在 1 毫秒内失败。

当我像这样将我的 jest 配置移动到 package.json 时,测试资源管理器能够成功运行我的测试,我认为这是因为它可以找到我的 jest 配置:

{
  "name": "stackoverflow.tests.typescript",
  "scripts": {
    "test": "jest --config jest.config.ts"
  },
  "devDependencies": {
    "@types/jest": "^27.0.3",
    "@types/jquery": "^3.5.9",
    "jest": "^27.4.3",
    "jest-editor-support": "^30.0.2",
    "ts-jest": "^27.0.7",
    "ts-node": "^10.4.0",
    "typescript": "^4.5.2"
  },
  "jest": {
    "preset": "ts-jest",
    "testEnvironment": "jsdom",
    "testPathIgnorePatterns": [
      "/node_modules/"
    ],
    "globals": {
      "ts-jest": {
        "tsconfig": "./tsconfig.json"
      }
    }
  }
}

我试图通过像这样修改我的.esproj 来修改测试资源管理器在运行测试时使用的命令,但这不起作用:

<Project Sdk="Microsoft.VisualStudio.JavaScript.Sdk/0.4.0-alpha">
  <PropertyGroup Label="Globals">
    <ProjectGuid>a509059e-5633-4f18-b58a-15b11d6a91sq</ProjectGuid>
  </PropertyGroup>
  <PropertyGroup>
    <JavaScriptTestRoot>tests\</JavaScriptTestRoot>
    <JavaScriptTestFramework>Jest</JavaScriptTestFramework>
  </PropertyGroup>
  <ItemGroup>
    <Script Include="**" Exclude="*.esproj;**\node_modules\**;*\*.js.map;*.js.map;bin\**;obj\**" />
  </ItemGroup>
  <Target Name="Restore">
    <Exec Command="npm install --no-audit --no-fund --no-progress --include=dev" />
  </Target>
  <Target Name="VSTest">
    <Exec Command="npm run test" /> <!-- Test explorer wouldn't run this command -->
  </Target>
</Project>

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2013-11-08
    相关资源
    最近更新 更多