“引用错误:文档未定义”的错误

v09wglhw  于 2022-11-04  发布在  React
关注(0)|答案(8)|浏览(218)

这是我的__tests__/App.js文件:

import React from 'react';
import ReactDOM from 'react-dom';
import App from '../src/containers/App';

it('renders without crashing', () => {
  const div = document.createElement('div');
  ReactDOM.render(<App />, div);
});

// sanity check
it('one is one', () => {
  expect(1).toEqual(1)
});

这是我运行yarn test时得到的输出:

FAIL  __tests__/App.js
  ● renders without crashing

    ReferenceError: document is not defined

      at Object.<anonymous>.it (__tests__/App.js:6:15)

  ✕ renders without crashing (1ms)
  ✓ one is one

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 passed, 2 total
Snapshots:   0 total
Time:        0.128s, estimated 1s
Ran all test suites related to changed files.

我是否需要导入另一个模块才能使document在此处可用?
谢谢你的帮助!

zvms9eto

zvms9eto1#

对我来说,这两种方法都有效
在package.json文件中添加测试脚本env标志

"scripts": {
   "test": "react-scripts test --env=jsdom"
}

使用酶

import { shallow } from 'enzyme';

 it('renders without crashing', () => {
  shallow(<App />);
 });
2ekbmq32

2ekbmq322#

我将jest.config.js中的值设置为下面的值,它工作了:

testEnvironment: 'jsdom'
w46czmvw

w46czmvw3#

将注解放在单元测试源代码的顶部

/**
 * @jest-environment jsdom
 */

模拟文档和窗口的信号。

lztngnrs

lztngnrs4#

如果使用jest,则在package.json中

"scripts":{
      "test": "jest --env=jsdom"
}
2exbekwf

2exbekwf5#

我刚刚遇到这个问题,2021年9月。我正在学习测试React,我解决了这个问题,进入节点模块文件夹。在该文件夹有一个jest文件夹。在jest文件夹有一个package.json文件。在该package.json文件中,我插入了一个东西。类似于上面提到的人。

包.json文件

"testEnvironment": "jsdom"
我知道一般我不应该编辑node_modules文件夹,但只是为了继续学习,这将不得不做。
我不知道对于一个更严肃的项目是否需要一些其他的解决办法。

iovurdzv

iovurdzv6#

如果您使用的是create-react-app,请确保运行yarn test而不是yarn jest或其他命令。

v8wbuo2f

v8wbuo2f7#

把这个放在index.test.js(或者测试文件)的顶部,不要放在中间或者末尾。
/***@ jest环境jsdom */

bqjvbblv

bqjvbblv8#

在我的案例中,解决方案是:
1.将字段testEnvironment: "jsdom"添加到jest.config.js

  1. npm i jest-environment-jsdom -D

相关问题