Эта строка:
import * as myModule from './myModule.js'
... импортирует привязки модуля для myModule.js
в myModule
.
Тогда эта строка:
const spy = jest.spyOn(myModule, 'bar');
... упаковывает модуль экспорта для bar
в шпион ...
... но шпион не вызывается, потому что useAHook
не вызывает экспорт модуля *1018* для bar
, он просто вызывает bar
напрямую.
Если вы измените useAHook
для вызова экспорта модуля для bar
, тогда будет вызван шпион.
Есть несколько способов сделать это.
Вы можете переместить bar
в свой собственный модуль ...
... или вы можете импортировать привязки модуля для myModule.js
, чтобы вы могли вызвать экспорт модуля для bar
:
import { useCallback } from 'react';
import * as myModule from './myModule'; // <= import the module bindings
export const useAHook = (arg1, arg2) => {
const foo = useCallback(() => {
myModule.bar(arg1, arg2); // <= call the module export for bar
}, [arg1, arg2]);
return foo;
}
export const bar = (a, b) => {
//does some stuff with a and b
}