を<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