尝试测试create-react-app项目时,“ReferenceError:document not defined”

时间:2017-05-10 19:55:38

标签: javascript reactjs jestjs create-react-app

这是我的__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

感谢您的帮助!

5 个答案:

答案 0 :(得分:22)

对我来说,其中任何一个都有效

在package.json文件中添加测试脚本env标志

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

使用酶

 import { shallow } from 'enzyme';

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

答案 1 :(得分:8)

将评论放在单元测试源的顶部

/**
 * @jest-environment jsdom
 */

开玩笑地嘲笑文档和窗口。

答案 2 :(得分:3)

我将 jest.config.js 中的值设置为以下并且它起作用了:

testEnvironment: 'jsdom'

答案 3 :(得分:2)

在package.json中(如果使用笑话)

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

答案 4 :(得分:0)

如果您使用的是create-react-app,请确保运行yarn test代替yarn jest或其他内容。