Estoy empezando a pensar que esto no es posible, pero quiero preguntar de todos modos.
Quiero probar que uno de mis módulos ES6 llama a otro módulo ES6 de una manera particular. Con Jasmine esto es súper fácil.
El código de la aplicación:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
Y el código de prueba:
//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);
});
});
¿Cuál es el equivalente con Jest? Siento que esto es algo tan simple que quiero hacer, pero me he estado arrancando el pelo tratando de resolverlo.
Lo más cerca que he estado es reemplazando import
s con require
s, y moviéndolos dentro de las pruebas / funciones. Ninguna de las cuales son cosas que quiero hacer.
// 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);
});
});
Para obtener puntos de bonificación, me encantaría hacer que todo funcione cuando la función dentro dependency.js
es una exportación predeterminada. Sin embargo, sé que espiar las exportaciones predeterminadas no funciona en Jasmine (o al menos nunca podría hacerlo funcionar), por lo que tampoco tengo la esperanza de que sea posible en Jest.
import
s arequire
s por ahora. Gracias por el aviso.