Hoppe
Hoppe

Reputation: 6805

Mock async function in imported module

How can I spy on an async function in an imported module?

jest.mock('snowflake-promise');
import { Snowflake } from 'snowflake-promise';

describe('Snowflake', () => {
    let snowflakeMocked: any;

    beforeEach(async () => {
        snowflakeMocked = Snowflake as jest.Mocked<typeof Snowflake>;         
    });

    test('Snowflake is...', async () => {
        jest.spyOn(Snowflake, 'execute').mockResolvedValue(new Promise<void>());

Argument of type '"execute"' is not assignable to parameter of type 'never'.

"snowflake-promise": "^4.2.0",

Upvotes: 0

Views: 432

Answers (1)

Clio Orgy&#225;n
Clio Orgy&#225;n

Reputation: 310

import { Snowflake } from 'snowflake-promise';
import { mockDeep } from 'jest-mock-extended';

describe('Snowflake', () => {
    let snowflakeMocked: DeepMockProxy<Snowflake>;

    beforeEach(async () => {
        snowflakeMocked = mockDeep<Snowflake>();         
    });

    test('Snowflake is...', async () => {
        snowflakeMocked.execute.mockResolvedValue(Promise<void>.resolve());
    });
}

Upvotes: 1

Related Questions