Я начинаю думать, что это невозможно, но я все равно хочу спросить.
Я хочу проверить, что один из моих модулей ES6 вызывает другой модуль ES6 определенным образом. С Жасмином это очень просто -
Код приложения:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
И тестовый код:
//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);
});
});
Что эквивалентно с Джестом? Я чувствую, что это такая простая вещь, которую я хочу сделать, но я рвал на себе волосы, пытаясь понять это.
Самое близкое, что я получил, - это заменить import
s на require
s и поместить их в тесты / функции. Ничего из того, что я хочу делать.
// 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);
});
});
Что касается бонусных баллов, я бы хотел, чтобы все это работало, когда функция внутри dependency.js
- экспорт по умолчанию. Тем не менее, я знаю, что слежка за экспортом по умолчанию не работает в Jasmine (или, по крайней мере, я никогда не смогу заставить его работать), поэтому я не надеюсь, что это возможно в Jest.
import
кrequire
s. Спасибо за внимание, хотя.