2016-03-01 12 views
15

का उपयोग कर प्रतिक्रिया घटक में यूनिट परीक्षण कस्टम फ़ंक्शंस मैं मोचा, एंजाइम का उपयोग कर प्रतिक्रिया घटकों के यूनिट परीक्षण बनाने पर काम कर रहा हूं। नीचे एक नमूना घटक है।मोचा, एंजाइम: एंजाइम

Foo.js

class Foo extends React.Component { 
    customFunction=() => { 
    } 

    render() { 
     return (<div className={this.props.name}/>); 
    } 
} 

और यहाँ परीक्षण फ़ाइल है।

फू-Test.js

import React from 'react'; 
import { expect } from 'chai'; 
import { shallow, mount, render } from 'enzyme'; 
import Foo from '../src/Foo'; 

describe("A suite", function() { 
    it("contains spec with an expectation", function() { 
     expect(shallow(<Foo />).contains(<div className="foo" />)).to.equal(true); 
    }); 

    it("contains spec with an expectation", function() { 
     expect(shallow(<Foo />).is('.foo')).to.equal(true); 
    }); 
}); 

सब कुछ अच्छा है। लेकिन मैं समझ में नहीं आया कैसे Foo.js में इकाई परीक्षण customFunction जब हम एंजाइम का उपयोग कर रहे

उत्तर

26

इस सवाल का सर्वश्रेष्ठ उत्तर वास्तव में यह क्या है कि customFunction वास्तव में क्या कर रहा है पर निर्भर करता है ...

आप कर सकते हैं करने के लिए इस तरह फ़ंक्शन को कॉल करें:

wrapper.instance().customFunction('foo', 'bar'); 

यदि यह एक समारोह है कि उदाहरण पर ही राज्य सेट है, और इस तरह गाया उत्पादन कैसा दिखता है को प्रभावित करता है, तो आप .update() रूप में अच्छी तरह

wrapper.instance().customFunction('foo', 'bar'); // uses setState internally 
wrapper.update(); // updates render tree 
// do assertions on the rendered output 
कॉल करने के लिए चाहते हो सकता है
+0

हाँ। काम कर रहा है धन्यवाद .. – pnsrinivasreddy

+0

लेकिन एक चीज जो इस इंस्टेस() विधि को वैश्विक स्कोप के साथ कोई समस्या है। वह घटक जो स्थानीय स्तर पर प्रदान किया जाता है। कंसोल का परीक्षण करते समय यह संदर्भ त्रुटि को फेंक रहा है: स्थानीय स्टोरेज परिभाषित नहीं किया गया है। – pnsrinivasreddy

+1

यह सुनिश्चित नहीं है कि यह उत्तर के रूप में क्यों चिह्नित नहीं है। –

संबंधित मुद्दे