2017-07-27 8 views
1

私はユニットテストを行うためにJestEnzymeを使用しています。私test.jsで酵素ラッパーの外にある要素をテストするにはどうすればよいですか?

は、私は私のテストがラッパー

wrapper.find('button').simulate('click') 

のボタンをクリックすると、コンポーネントがラッパーの外にあるモーダルをレンダリング

let wrapper = mount(<app /> 

したファイル。

モーダルへの参照を取得する必要がありますので、そのボタンのクリックをシミュレートすることができます。私はdocument.body.childrenを通してモーダルへの参照を得ることができますが、私はそれを使って何もできません。

レンダリングされたラッパーの外側にある要素をテストするために酵素を使用するにはどうすればよいですか?

+0

ボタンで通常のDOMイベントを発生させて、クリックをシミュレートできますか? 'document.querySelector( '..')を使うとうまくいくはずの[ヘルパー](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click)関数があります。 () 'をクリックします。 – ivarni

+0

@ivarniいいえ、私はブラウザ環境ではなく、テストを実行します。私はどんなWeb APIも使用できません – radical

+0

ああ。我々はjsdomで私たちを実行しますが、私たちはJestを使用しません。コンポーネントにモーダル缶の参照がある場合は、[instance()](https://github.com/airbnb/enzyme/blob/master/docs/api/ReactWrapper/instance.md)からアクセスできますか?私はそれが動作するかどうか分からないが、それはショットの価値がある。 – ivarni

答えて

0

あなたは

state={ 
    data: 'first State', 
}; 

render(){ 
return (<div> 
    <button onClick={(e) => this.setState({data: 'second State'})}>Test</button> 

</div> 
} 

テストで使用することができ、あなたのコンポーネントの中の酵素のApp

を反応させるのかだけ冗談

const wrapper = shallow(<Name Your Component/>); 

it('test button',() => { 
     expect(wrapper.state().data).toBe('first State'); 
     wrapper.find('button').simulate('click'); 
     expect(wrapper.state().data).toBe('second State') 
    }); 

あなたに1つの定義された状態でButtonOnclikをテストすることができますあなたのために役立つことを願って:)

+0

あなたは私の意味を誤解しているように見えます、後で私は自分の問題を編集します、私はそれが役に立つと思う – radical

関連する問題