我对使用<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 />
,似乎要设置的值。上面的第二个代码块确实打印出了该值,同样,如果我在Chrome中检查了输入元素并$0.value
在控制台中键入,它将显示期望的值。
input.render()
不react-dom
渲染。就是这样:airbnb.io/enzyme/docs/api/ShallowWrapper/render.html