を<input>使用するときに値にアクセスする方法について混乱していますmount。これが私のテストとして得たものです:
it('cancels changes when user presses esc', done => {
const wrapper = mount(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.render().attr('value'));
input.simulate('focus');
done();
});
コンソールが印刷されundefinedます。しかし、コードを少し変更すると、機能します。
it('cancels changes when user presses esc', done => {
const wrapper = render(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.val());
input.simulate('focus');
done();
});
もちろん、input.simulate私がrender今使っているので、回線が失敗することを除いて。正しく動作するには両方が必要です。これを修正するにはどうすればよいですか?
編集:
言及する必要<EditableText />がありますが、制御されたコンポーネントではありません。私が合格したときにしかしdefaultValueに<input />、値を設定しているようです。上記の2番目のコードブロックは値を出力します。同様に、Chromeで入力要素を調べ$0.valueてコンソールに入力すると、期待値が表示されます。
input.render()されていないreact-domレンダリング。それはこれです:airbnb.io/enzyme/docs/api/ShallowWrapper/render.html