मैं उलझन में हूं कि कैसे <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 />
, यह मान सेट करने लगता है। ऊपर दूसरा कोड ब्लॉक मान प्रिंट करता है, और इसी तरह अगर मैं क्रोम में इनपुट तत्व का निरीक्षण करता हूं और $0.value
कंसोल में टाइप करता हूं , तो यह अपेक्षित मान दिखाता है।
input.render()
नहीं हैreact-dom
प्रस्तुत करना। यह यह है: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html