2017-09-06 1 views
0

Je veux tester cette répartition appelle la fonction correcte dans mon composant intelligent. Cependant, j'ai seulement réussi à tester la valeur de retour de cette fonction. Est-il possible de se moquer, d'espionner ou d'écraser la fonction?Espion sur la fonction exportée dans le composant intelligent

mon composant:

import { connect } from 'react-redux'; 
import { fetchDocumentsIfNeeded } from '../actions'; 
import SearchComponent from '../components/Search'; 

const mapDispatchToProps = (dispatch) => { 
    return { 
     triggerSearch: (event) => { 
      dispatch(fetchDocumentsIfNeeded(event.target.value)); 
     } 
    }; 
}; 

export default connect(
    mapDispatchToProps 
)(SearchComponent); 

Mon test à ce jour:

import React from 'react'; 
import Search from '../../src/containers/Search'; 
import {shallow} from 'enzyme'; 
import {spy} from 'sinon'; 
import configureMockStore from 'redux-mock-store'; 

const mockStore = configureMockStore(); 

describe('containers/Search',() => { 
    let wrapper, store; 

    beforeEach(() => { 
     store = mockStore({searchedText: "fun"}); 
     store.dispatch = spy(); 
     wrapper = shallow(<Search store={store} />); 
    }); 

    it('maps triggerSearch to dispatch search action',() => { 
     const event = {target: {value: "test"}}; 
     wrapper.props().triggerSearch(event); 

     expect(store.dispatch.calledWithMatch({text: "test", type: 'SEARCH_DOCUMENTS'})).toEqual(true); 
    }); 
}); 

Répondre

0

J'ai finalement trouvé une solution:

import dependency from '../../src/actions'; 

jest.mock('../../src/actions',() => ({ 
    fetchDocumentsIfNeeded: jest.fn() 
})); 

expect(dependency.fetchDocumentsIfNeeded).toBeCalled();