2016-07-08 5 views
23

मैं अपने घटक का परीक्षण करने के लिए एंजाइम से mount का उपयोग करने की कोशिश कर रहा हूं जिसमें कई सामग्री UI घटक घोंसला हैं। कुछ खुदाई के बादघटक UI परीक्षण करने वाले घटक का परीक्षण करने के लिए एंजाइम माउंट विधि में संदर्भ को कैसे पास किया जाए?

TypeError: Cannot read property 'prepareStyles' of undefined

, I did found that a theme needs to be passed down in a context: मैं जब परीक्षण चल रहा है इस त्रुटि मिलती है। मैं परीक्षण में ऐसा कर रहा हूं लेकिन अभी भी यह त्रुटि प्राप्त कर रहा हूं।

मेरा परीक्षण:

import expect from 'expect'; 
import React, {PropTypes} from 'react'; 
import {mount} from 'enzyme'; 
import SearchBar from './SearchBar'; 
import getMuiTheme from 'material-ui/styles/getMuiTheme'; 

function setup() { 
    const muiTheme = getMuiTheme(); 

    const props = { 
    closeSearchBar:() => {}, 
    fetchSearchData:() => {}, 
    data: [], 
    searching: false 
    }; 

    return mount(<SearchBar {...props} />, {context: {muiTheme}}); 
} 

describe('SearchBar Component',()=> { 

    it('Renders search toolbar properly',() => { 
    const wrapper = setup(); 
    expect(wrapper.find('.toolbar').length).toBe(1); 
    expect(wrapper.find('button').length).toBe(1); 
    }); 
}); 

मेरे searchbar घटक एक राज्यविहीन घटक है, इसलिए मैं किसी भी सन्दर्भ में खींच नहीं कर रहा हूँ। लेकिन जब भी मैं हूं, तब भी मुझे वही त्रुटि मिलती है।

मैं क्या गलत कर रहा हूं?

उत्तर

39

mount विकल्पों में childContextTypes जोड़ने का प्रयास करें:

return mount(
    <SearchBar {...props} />, { 
    context: {muiTheme}, 
    childContextTypes: {muiTheme: React.PropTypes.object} 
    } 
); 

यह करने के बाद आप muiTheme यह करने के लिए उपलब्ध संदर्भ के माध्यम से बच्चों है बनाने के लिए एनजाइम आवरण निर्धारित किया है।

+0

हां, यह वही था जो यह गायब था। मुझे लगता है कि मुझे 'संदर्भ प्रकार: {muiTheme: React.PropTypes.object}', लेकिन 'childContextTypes 'को पारित करने का प्रयास करने के रूप में प्रतिक्रिया संदर्भ को थोड़ा और देखना होगा। धन्यवाद निकोलस! – Erika

+3

'उथले 'के साथ समान कार्य करता है, बस उथले द्वारा माउंट को प्रतिस्थापित करें। –

+1

इस के लिए धन्यवाद एक टन! मुझे विश्वास नहीं है कि यह इतना आसान था। मैं पहले से ही स्वीकार कर रहा था कि मुझे हमेशा अपने परीक्षण घटकों को रेडक्स स्टोर प्रदाता में लपेटने की आवश्यकता होगी। – gustavohenke

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