2017-01-08 12 views
11

के साथ प्रतिक्रिया-राउटर का परीक्षण कैसे करें मैं अपने प्रतिक्रिया-रेडक्स प्रोजेक्ट का परीक्षण करने के लिए एंजाइम + मोचा + चाई का उपयोग कर रहा हूं। एंजाइम घटक व्यवहार का परीक्षण करने के लिए उथला प्रदान करता है। लेकिन मुझे राउटर का परीक्षण करने का कोई रास्ता नहीं मिला। मैं नीचे के रूप में रूटर प्रतिक्रिया-उपयोग कर रहा हूँ:एंजाइम

<Router history={browserHistory}> 
    ... 
     <Route path="nurse/authorization" component{NurseAuthorization}/> 
    ... 
    </Route> 

मैं इस मार्ग nurse/authorizationNurseAuthorization घटक का उल्लेख परीक्षण करना चाहते हैं। रिस्पॉज प्रोजेक्ट में इसका परीक्षण कैसे करें?

EDIT1

मैं रूटर ढांचे के रूप में react-router उपयोग कर रहा हूँ।

उत्तर

7

आप इसका परीक्षण करने के लिए अपने राउटर को एक घटक के अंदर लपेट सकते हैं।

Routes.jsx

export default props => (
    <Router history={browserHistory}> 
    ... 
    <Route path="nurse/authorization" component{NurseAuthorization}/> 
    ... 
    </Route> 
) 

index.js

import Routes from './Routes.jsx'; 
... 

ReactDOM.render(<Routes />, document.getElementById('root')); 

तो फिर तुम उथले करने के लिए है अपने Routes घटक प्रस्तुत करना है, और आप की जाँच करने के लिए एक वस्तु नक्शा बनाने के लिए सक्षम हैं पथ और संबंधित घटक के बीच संवाद।

Routes.test.js

import { shallow } from 'enzyme'; 
import { Route } from 'react-router'; 
import Routes from './Routes.jsx'; 
import NurseAuthorization from './NurseAuthorization.jsx'; 

it('renders correct routes',() => { 
    const wrapper = shallow(<Routes />); 
    const pathMap = wrapper.find(Route).reduce((pathMap, route) => { 
    const routeProps = route.props(); 
    pathMap[routeProps.path] = routeProps.component; 
    return pathMap; 
    }, {}); 
    // { 'nurse/authorization' : NurseAuthorization, ... } 

    expect(pathMap['nurse/authorization']).toBe(NurseAuthorization); 
}); 
+0

मैं अपने अनुदेश का पालन किया लेकिन लाइन पर त्रुटि नीचे मिल गया 'स्थिरांक आवरण = उथले ();' - ऑब्जेक्ट एक कन्स्ट्रक्टर नहीं है ('घटक (पब्लिकप्रॉप, पब्लिक कॉन्टेक्स्ट, अपडेट क्यूयू) का मूल्यांकन करना) –

+0

बीटीडब्लू मैं' प्रतिक्रिया-राउटर 'का उपयोग कर रहा हूं –

+0

@Zhaoi रूट्स एक प्रतिक्रिया घटक होना चाहिए (Routes.jsx देखें) – Freez

0

मैं अपने रास्तों गतिशील रूटर के लिए एक और फाइल में परिभाषित किया था, तो मैं भी परीक्षण कर रहा हूँ कि सभी मार्गों मैं मार्गों के रूप में प्रतिपादन कर रहा हूँ मेरी रास्तों में परिभाषित कर रहे हैं .js स्थिरांक:

it('Routes should only have paths declared in src/routing/paths.js',() => { 
    const isDeclaredInPaths = (element, index, array) => { 
    return pathsDefined.indexOf(array[index]) >= 0; 
    } 
    expect(routesDefined.every(isDeclaredInPaths)).to.be.true; 
}); 
संबंधित मुद्दे