Доступ к свойству.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;
});
Другие вопросы по тегам