J'ai une fonction dans un module appelé bouton-actions qui est appelée lorsqu'un utilisateur clique sur un bouton de retour. Je veux tester directement la méthode backButtonActions mais j'ai besoin de simuler les méthodes LeaveApp et displayById à l'intérieur de backButtonActions qui sont appelées.
Voici ma méthode de fichier button-actions.js.
export function backButtonActions( label, page ){ //, page
console.log("LABEL = ", label, " page = ", page);
switch( label ){
case 'step1':
page.leaveApp();
break;
case 'step2':
page.displayById();
break;
}
}
Je suis nouveau dans les tests, donc il se peut que je manque quelque chose de très simple. Ci-dessous est mon fichier test.js
window.$ = require('jquery');
import {backButtonActions} from '../button-actions';
describe('Button Actions', () => {
const page = {}
beforeEach(() => {
page.leaveApp = jest.fn(() => "leave");
page.displayById = jest.fn(() => "Display");
document.body.innerHTML =
'<div>' +
' <button class="btn-back" />' +
'</div>';
$('.btn-back').click((event, label) =>{
backButtonActions( label, page );
});
});
it('backButtonActions requires a string of either "step1" or "step2"', () => {
$('.btn-back').trigger('click', 'step1');
expect(backButtonActions).toBeCalled();
expect(backButtonActions).toBeCalledWith("step1" || "step2");
});
})
Lorsque j'exécute le test ci-dessus, j'obtiens l'erreur suivante.
● Actions du bouton ›backButtonActions nécessite une chaîne de" étape 1 "ou" étape 2 "
expect(jest.fn())[.not].toBeCalled() jest.fn() value must be a mock function or spy. Received: function: [Function backButtonActions] at Object.<anonymous> (test/js/spec/create/button-actions.test.js:64:50)
Y a-t-il autre chose que je devrais exécuter pour que cela fonctionne?
Vous devez espionner la fonction backButtonActions
, soit via la méthode spyOn
de jasmine, soit via la méthode jest.spyOn
De Jest
https://facebook.github.io/jest/docs/jest-object.html#jestspyonobject-methodname