Можно ли очистить макет модуля в JEST? - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу смоделировать функцию forgotPassword внутри модуля authenticationPlugin/App, поэтому я делаю это

jest.mock("authenticationPlugin/App", () => ({
    forgotPassword (email: string) {
        const msg='success'
        email='a'
        return msg
    }
}))

Теперь я хочу очистить макет authenticationPlugin/App и иметь другую реализацию для метод forgotPassword

Итак, я сделал это

jest.clearAllMocks();
jest.mock("authenticationPlugin/App", () => ({
        forgotPassword (email: string) {
            throw new Error(<any>{'err':{'message':'Network Error'}})
        }
    }))

Теперь я ожидаю, что метод forgotPassword будет иметь другую реализацию после очистки макетов для модуля authenticationPlugin/App, но он не меняется ...

1 Ответ

1 голос
/ 17 апреля 2020

Если вы хотите иметь различную реализацию для макета в каждом тесте, вы можете использовать jest.fn.

Расширяя код, это может выглядеть так:

it('returns success', () => {
    authApp.forgotPassword = jest.fn((email: string) => {
        const msg='success'
        email='a'
        return msg
    });

    // Your test code here.
});

test('returns error', () => {
    authApp.forgotPassword = jest.fn((email: string) => {
        throw new Error(<any>{'err':{'message':'Network Error'}})
    });

    // Your test code here.
});
...