मैं उलझन में हूं कि कैसे <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