Tôi bối rối về cách truy cập <input>
giá trị khi sử dụng mount
. Đây là những gì tôi nhận được làm bài kiểm tra của mình:
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();
});
Bàn điều khiển in ra undefined
. Nhưng nếu tôi sửa đổi một chút mã, nó hoạt động:
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();
});
Tất nhiên, ngoại trừ input.simulate
đường dây bị lỗi vì tôi đang sử dụng render
bây giờ. Tôi cần cả hai để hoạt động bình thường. Làm cách nào để sửa lỗi này?
CHỈNH SỬA :
Tôi nên đề cập, <EditableText />
không phải là một thành phần được kiểm soát. Nhưng khi tôi chuyển defaultValue
vào <input />
, nó dường như đã đặt giá trị. Khối mã thứ hai ở trên không in ra giá trị và tương tự như vậy nếu tôi kiểm tra phần tử đầu vào trong Chrome và nhập $0.value
vào bảng điều khiển, nó sẽ hiển thị giá trị mong đợi.
input.render()
đượcreact-dom
kết xuất. Đó là cái này: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html