私はJestとスナップショットテストを行っています。私がしたいのは、コンポーネントをReactTestRenderer
でレンダリングし、その中のボタンをクリックしてシミュレートしてスナップショットを確認することです。ReactTestRenderer/Jestによってレンダリングされたコンポーネントとのやりとり方法
ReactTestRendererのcreate
呼び出しによって返されるオブジェクトは、私が直接そのメソッドを呼び出すことができますgetInstance
機能を持っていますが、ReactTestUtilsで検索/占術の方法のいずれかで動作するようには思えません。
私は手動でツリーを走査して、ボタンをクリックして、より良い方法がなければならないように思えることができます。
はimport React from 'react';
import ReactDOM from 'react-dom';
import MyCounter from './MyCounter';
import renderer from 'react-test-renderer';
import {Simulate, findRenderedDOMComponentWithClass} from 'react-addons-test-utils';
it('should render 0',() => {
const component = renderer.create(<MyCounter/>);
const inst = component.getInstance();
// Calling methods directly works, but that's not the same as
// simulating a click on the button...
inst.increment();
// This also works, but it's awfully verbose...
component.toJSON().children[1].props.onClick();
// I'm looking for something like...
// inst.find('.increment').click()
// or:
// Simulate.click(inst.find('.increment'))
// or:
// Simulate.click(findRenderedDOMComponentWithClass(inst, 'increment'))
// Finally, verify the snapshot
expect(component.toJSON()).toMatchSnapshot();
});
はこのようなものが存在しますか?
何を使いたくない場合
を探しているのは酵素です:http://airbnb.io/enzyme/ ...しかし、酵素は本当に多くの不必要なものや潜在的なボトルネックを導入するので、実際にはスナップショットを横断するツールが必要です。私は2017年の目標はただJestを使うことだと思います。 Reactがとても信頼できるのであれば、(DOMを介した)クリックをシミュレートすることは本当に必要ありません。さらに、スナップショットがステートレスコンポーネントと組み合わせて非常に強力な場合は、cssスタイルセレクタがほとんど必要ありません。そのため、すぐに小道具として使用される関数を呼び出すためのセレクタが必要なだけです。 –