2017-08-20 2 views
1

J'écris un cas de test JEST/Enzyme pour le module.Jest - Fonction imbriquée simulée

L'une des fonctions que je suis en train de tester dans mon composant consiste à enregistrer un fichier xml. Ce qui appelle à son tour une fonction bibliothèque fileDownload de « réagir-file-download »

const saveContentToXML =() => { 
    if(this.props.message && this.props.message.details){ 
     fileDownload(this.props.message.details, this.props.message.title); 
    } 
} 

Quand j'ai écrit cas de test, il appelle saveContentToXML et appelle à son tour fileDownload. Cela entraîne une exception.

TypeError: window.URL.createObjectURL is not a function 

Mon cas de test ressemble

test('Save Content as XML Test',() =>{ 
    const component = shallow(<Message details={details} />); 
    component.instance().saveContentToXML(); 
}); 

Comment puis-je tester cette fonction?

+0

Peut-être que cela peut vous aider : https://stackoverflow.com/questions/45325081/mocking-dependency-of-module-function-under-test-in-javascript – croraf

Répondre

1

Vous devez moqueront réagir fichier téléchargement, puis affirmer qu'il est appelé

// Default mock will just make fileDownload a jest mock function 
jest.mock('react-file-download') 

import fileDownload from 'react-file-download' 

test('Save Content as XML Test',() =>{ 
    const component = shallow(<Message details={details} />); 
    component.instance().saveContentToXML(); 
    expect(fileDownload).toHaveBeenCalledWith('details', 'title'); 
    fileDownload.mockClear() // resets the mock function so the call is not used in assertions for other tests 
}); 

La documentation de plaisanterie sur les fonctions fausses est une bonne ressource pour se référer à: https://facebook.github.io/jest/docs/mock-functions.html