2017-09-06 4 views
0

Ich möchte testen, dass Versand die richtige Funktion in meiner Smart-Komponente aufruft. Ich habe es jedoch nur geschafft, den Rückgabewert dieser Funktion zu testen. Ist es möglich, die Funktion zu verspotten, auszuspionieren oder abzustechen?Spy auf exportierte Funktion in Smart-Komponente

meine Komponente:

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); 

Mein Test so weit:

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); 
    }); 
}); 

Antwort

0

ich endlich eine Lösung gefunden:

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

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

expect(dependency.fetchDocumentsIfNeeded).toBeCalled(); 
Verwandte Themen