Je commence à penser que ce n'est pas possible, mais je veux vous demander de toute façon.
Je veux tester que l'un de mes ES6 modules appelle une autre ES6 module d'une manière particulière. Avec le Jasmin c'est super facile:
Le code de l'application:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
Et le code de test:
//myModule-test.js
import myModule from '../myModule';
import dependency from '../dependency';
describe('myModule', () => {
it('calls the dependency with double the input', () => {
spyOn(dependency, 'doSomething');
myModule(2);
expect(dependency.doSomething).toHaveBeenCalledWith(4);
});
});
Ce qui est l'équivalent avec la Blague? J'ai l'impression que c'est une chose toute simple à faire, mais j'ai été déchirant mes cheveux à essayer de comprendre.
Le plus proche que je suis venu, c'est par le remplacement de l' import
s avec require
s, et en les déplaçant à l'intérieur de l'tests/fonctions. Ni de qui sont des choses que je veux faire.
// myModule.js
export default (x) => {
const dependency = require('./dependency'); // yuck
dependency.doSomething(x * 2);
}
//myModule-test.js
describe('myModule', () => {
it('calls the dependency with double the input', () => {
jest.mock('../dependency');
myModule(2);
const dependency = require('../dependency'); // also yuck
expect(dependency.doSomething).toBeCalledWith(4);
});
});
Pour les points de bonus, j'aimerais faire tout fonctionner lorsque la fonction à l'intérieur d' dependency.js
est une valeur par défaut à l'exportation. Cependant, je sais que l'espionnage sur les défaut des exportations ne fonctionne pas dans le Jasmin (ou, au moins, je n'ai jamais pu le faire fonctionner), donc je ne suis pas l'espoir qu'il est possible dans la Plaisanterie.