describeWithDOM()
Enzymeとを使用して React Components の動作をテストしようとしていmount()
ます。しかし、コンポーネントが jQuery をインポートすると、次のエラーが発生します。
エラー: jQuery にはドキュメントを含むウィンドウが必要です
Enzyme が内部で jsdom を使用していることは知っており、jsdom がウィンドウとドキュメントを管理しているといつも思っていました。しかし、これらを一緒に機能させる方法を見つけることができないようです。
テスト コードは次のようになります。
import chai, {expect} from 'chai';
import Select from './Select';
import React, {createElement} from 'react';
import {describeWithDOM, mount} from 'enzyme';
describe('UI Select', () => {
//more shallow tests here
describeWithDOM('User Actions', () => {
it('Toggles the .ui-options menu on button click', () => {
const wrapper = mount(<Select {...baseProps} />);
expect(wrapper.state().open).to.not.be.ok;
wrapper.find('button').simulate('click');
expect(wrapper.state().open).to.be.ok;
});
});
}
ボタンの onClick メソッドでは、jquery 関数が呼び出されます。$('#inputSelector').focus()
テストで Enzyme と jsdom に jquery を使用させるにはどうすればよいですか?