web-dev-qa-db-ja.com

create-react-appプロジェクトをテストしようとすると、「ReferenceError:document is not defined」

これは私の__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をここで使用するには、別のモジュールをインポートする必要がありますか?

助けてくれてありがとう!

16
SeanPlusPlus

私にとっては、これらのいずれかが働いた

Package.jsonファイルにテストスクリプトenvフラグを追加

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

酵素を使用する

 import { shallow } from 'enzyme';

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

単体テストソースの上部にコメントを配置する

/**
 * @jest-environment jsdom
 */

jestにドキュメントとウィンドウのモックを送信します。

0
jlb

create-react-appを使用している場合は、yarn testなどの代わりにyarn jestを実行してください。

0
0xcaff