9

我无法测试使用 create-react-app 创建的应用程序。

所有指南都说测试默认工作,但是当我尝试“yarn test”时,它需要安装'jest-cli'并且安装后出现错误:

类型错误:environment.teardown 不是函数

4

6 回答 6

19

您不需要自己安装 jest-cli。它应该开箱即用。

尝试以下操作:

  1. 删除 package-lock.json、yarn.lock 和 node_modules
  2. 从 package.json 中的依赖项中删除 jest
  3. 然后做npm installor yarn install
于 2018-06-05T09:32:25.990 回答
8

将新版本的“jest-environment-jsdom”添加到文件“package.json”中。

于 2018-08-31T15:13:29.420 回答
2

如果您还没有用于create-react-app该项目:

  • 只需jest, jest-cli, jest-environment-jsdompackage.json.
  • 删除文件夹node-modules、文件package-lock.json和文件yarn.lock
  • 使用npm --save iyarn add安装它们,使它们中的每一个都具有相同的版本。

这应该工作!

就我而言,我错过了jest-environment-jsdom包裹。

于 2019-08-26T14:35:56.247 回答
1

create-react-app就我而言,它会引发此错误,因为我使用和 install创建了我的 React 项目jest。在某种程度上它是冲突的。

我通过从我的项目中删除并使用测试脚本来解决它。jestcreate-react-app

于 2018-07-12T09:49:29.277 回答
1

在这个问题上敲了一个晚上之后,我想我终于解决了。首先,让我描述一下问题:

我也得到:

类型错误:environment.teardown 不是函数

因为我试图将 Jest 升级到最新版本。使用 Create-React-App 启动应用程序时,它会安装不包含所有功能的早期版本的 Jest。我对使用 inlineSnapshots 功能很感兴趣,它允许您针对测试文件中的 HTML 标记断言呈现的组件。

Create-React-App 或 Jest 的文档中未包含一些您应该注意的内容。如果您想使用更新的 Jest 功能,例如 inlineSnapshots,则需要执行以下操作:

  • yarn 添加了新版本的 Jest 和 jest-environment-jsdom
  • yarn add prettier --dev (这是为了方便重写回源文件。)
  • 在每个测试脚本的最顶部添加一个 Jest env docblock。

docblock 是带有 pragma 标记“@”的 JavaScript 块注释。为了设置 Jest 环境,您可以将其添加到每个测试文件的顶部:

/**
 * @jest-environment jsdom
 */

这指示 jest 在 jsdom 环境中运行测试,它应该与package.json文件的测试脚本部分中传递的内容相匹配。我的看起来像这样(忽略带有 react-app-rewired 的部分):

   "scripts": {
      "start": "yarn run flow && react-app-rewired start",
      "build": "yarn run flow && react-app-rewired build",
      "test": "react-scripts test --env=jsdom"
   }

在完成所有这些之后,我终于能够让 inlineSnapshots 工作了。

于 2018-09-25T17:08:14.967 回答
0

对我来说,这是模块导入绑定。基本上,对我来说,它是模块导出/导入绑定。

基本上如果它是使用导出的module.export,你应该使用导入require。如果它是使用export或导出的export default,则应该使用 导入import

这里不允许混合。

于 2019-02-28T23:26:04.040 回答