🤫

テスト時にreact-modalが原因で発生するエラー解消方法

に公開

現在react-modalを使うことはあまりないですが、備忘録も兼ねて。

対象となるモーダルのコード

import React from "react";
import Modal from "react-modal";

export const exampleModal = () => {
  Modal.setAppElement("#root"); // ルートとなる要素を指定
  
  const [isOpen, setIsOpen] = React.useState(false);
  
  return (
    <>
      <button onClick={() => setIsOpen(true)}>Open Modal</button>
      <Modal
        isOpen={isOpen}
        onRequestClose={() => {
          setIsOpen(false);
        }}
      >
      <h2>Example Modal</h2>
      <button onClick={() => setIsOpen(false)}>Close Modal</button>
    </Modal>
    </>
  );
};

testing-libraryを使用して、react-modalを使用したモーダルのテストをする際に、以下のようなエラーが発生するはずです。

Error: react-modal: No elements were found for selector #root.

解消方法

テストコードに以下のコードを追加することで解消できます。

  beforeAll(() => {
    const app = document.createElement("div")
    app.id = "root" // 指定しているルートとなる要素を作成
  
    document.body.appendChild(app)
  });

Discussion