एनजाइम docs के अनुसार:
पूर्ण डोम प्रतिपादन के लिए mount(<Component />)
उपयोग के मामलों जहां घटक है कि डोम API के साथ बातचीत कर सकते हैं, या पूरी तरह घटक का परीक्षण करने में पूर्ण जीवन चक्र की आवश्यकता हो सकती है के लिए आदर्श है (यानी , componentDidMount आदि)
बनाम
shallow(<Component />)
उथला प्रतिपादन के लिए एक इकाई के रूप में एक घटक के परीक्षण करने के लिए अपने आप को सीमित करना है, और सुनिश्चित करें कि आपके परीक्षण परोक्ष रूप से बच्चे के घटकों के व्यवहार पर जोर देते हुए नहीं कर रहे हैं उपयोगी है।
बनाम
render
जो स्थिर HTML के घटकों प्रतिक्रिया प्रस्तुत करना और जिसके परिणामस्वरूप HTML संरचना का विश्लेषण किया जाता है।
आप अभी भी एक उथले में अंतर्निहित "नोड्स" देख सकते हैं प्रस्तुत करना तो उदाहरण के लिए, तो आप इस (थोड़ा काल्पनिक) उदाहरण कल्पना धावक के रूप में AVA का उपयोग कर की तरह कुछ कर सकते हैं:
let wrapper = shallow(<TagBox />);
const props = {
toggleValue: sinon.spy()
};
test('it should render two top level nodes', t => {
t.is(wrapper.children().length, 2);
});
test('it should safely set all props and still render two nodes', t => {
wrapper.setProps({...props});
t.is(wrapper.children().length, 2);
});
test('it should call toggleValue when an x class is clicked', t => {
wrapper.setProps({...props});
wrapper.find('.x').last().simulate('click');
t.true(props.toggleValue.calledWith(3));
});
सूचना है कि प्रतिपादन, सेटिंग और खोजने चयनकर्ताओं और यहां तक कि सिंथेटिक घटनाओं सभी उथले प्रतिपादन द्वारा समर्थित हैं, इसलिए अधिकांश बार आप सिर्फ इतना है कि उपयोग कर सकते हैं सहारा।
लेकिन, आप घटक का पूर्ण जीवन चक्र प्राप्त नहीं कर पाएंगे, इसलिए यदि आप घटकडिडउंट में चीजों की अपेक्षा करते हैं, तो आपको mount(<Component />)
का उपयोग करना चाहिए;
यह परीक्षण Sinon का उपयोग करता है पर जासूसी करने के घटक के componentDidMount
test.only('mount calls componentDidMount', t => {
class Test extends Component {
constructor (props) {
super(props);
}
componentDidMount() {
console.log('componentDidMount!');
}
render() {
return (
<div />
);
}
};
const componentDidMount = sinon.spy(Test.prototype, 'componentDidMount');
const wrapper = mount(<Test />);
t.true(componentDidMount.calledOnce);
componentDidMount.restore();
});
ऊपर उथले या प्रतिपादन के साथ पारित नहीं होगा प्रस्तुत करना
render
केवल एचटीएमएल के साथ आप प्रदान करेगा, जिससे आप अभी भी इस तरह की चीजें कर सकते हैं:
test.only('render works', t => {
// insert Test component here...
const rendered = render(<Test />);
const len = rendered.find('div').length;
t.is(len, 1);
});
उम्मीद है कि यह मदद करता है!
साफ़ स्पष्टीकरण आदमी! –
मुझे अभी भी 100% नहीं मिलता है, क्यों तीन क्रियाएं उनके साथ विभिन्न विधियां लाती हैं। उदाहरण के लिए कोई उथले में wrapper.getNode() का उपयोग कर सकता है लेकिन प्रस्तुत नहीं करता है। कोई स्पष्टीकरण/लिंक/दस्तावेज़/ब्लॉग, जो मुझे इस टॉगर को पाने में मदद करते हैं? – Paulquappe
और अधिक प्रदर्शनक क्या है? 'रेंडर' या 'उथला'? –