かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

React Jest + enzyme 'equal' of undefined になる

React で作ったアプリを Jest + enzyme でテストしている時にTypeError: Cannot read property 'equal' of undefinedというエラーになったのでメモ

enzymeのAPIリファレンスを見ながらこんなテストを書いていました。

describe("App", ()=> {
  const app = shallow(<App />);
  // 中略
  it('count is 0', () => {
    expect( app.find('.count').text() ).to.equal('0');
  });
});

これをテストすると…

TypeError: Cannot read property 'equal' of undefined

      27 |     it('count is 0', () => {
    > 28 |       expect(app.find('.count').text()).to.equal("0");
         |       ^
      29 |     });

テスト以前の問題として equal が無いよというエラーになってしまいました。

to.equalchai の構文。Jest なら .toEqual を使う

That's not an Enzyme problem.
expect(...).to~ is undefined because you have installed expect.js and you are using chai syntax.
ref. javascript - TypeError: Cannot read property 'equal' of undefined - Stack Overflow

という事のようです。

enzymeのAPIリファレンス にあるサンプルコードは expect の部分が基本的に .to.〜 の構文で書かれていますが、この部分は enzyme ではないので Jest なら Jest の構文に置き換えて読んでくれという事のようです。
なので、先のテストは Jest を使ったテストの場合は .toEqual() に置き換えればOK

describe("App", ()=> {
  const app = shallow(<App />);
  // 中略
  it('count is 0', () => {
    expect( app.find('.count').text() ).toEqual('0');
  });
});

👇

 PASS  src/__tests__/App.test.js

( 'ω' و( و"♪ イェーイ

 

モダンフロントエンド色んなライブラリを合わせて使うから、該当部分がどのライブラリのものなのか把握しておかないと結構ハマる…

node学園で聴いた npm / yarn zero install の仕組み導入されるの楽しみ


[参考]

React.js&Next.js超入門

React.js&Next.js超入門

デビッドリオ タイガースパイス チャイ 398g

デビッドリオ タイガースパイス チャイ 398g

これは放課後チャイタイム