Доступ к свойству.mock автозамкнутой функции
У меня есть этот код:
import * as a from 'a-a';
jest.mock('a-a');
describe('a-a', () => {
beforeAll(async () => {
const x = await a.x(1); // Calls the mock
console.log(x); // 1
console.log(a.x.mock) // Undefined
});
});
Макет функции:
export async function x(data) {
cache.push(data);
console.log('HERE'); // this is printed
return data;
}
Макет модуля находится в __mocks__
каталог.
a.x()
вызывает поддельную функцию, но a.x.mock
не определено
Как это возможно? Где .mock
имущество?
1 ответ
Решение
Итак, после некоторого расследования я обнаружил, что функции, объявленные в __mocks__
каталог не обернут jest.fn()
по умолчанию.
Лично я нахожу это немного запутанным.
Таким образом, вы можете сделать оба
function x(data) {
cache.push(data);
return cache;
}
jest.mock('a-a', () => ({x: x}))
если вы делаете все в одном файле, или
jest.mock('a-a');
а затем в __mocks__/a-a.js
файл
export const x = jest.fn(async (data) => {
cache.push(data);
return cache;
});