Skip to content

Argument of type X is not assignable to parameter of type 'never' #2610

@ypicard

Description

@ypicard

🐛 Bug Report

I am trying to use ts-jest to mock one of my dependencies. This dependency (auth0.ManageClient) has multiple definitions for a same method and overrides it based on the params you pass it:

    // Roles
    getRoles(): Promise<Role[]>;
    getRoles(cb: (err: Error, roles: Role[]) => void): void;
    getRoles(params: GetRolesData): Promise<Role[]>;
    getRoles(params: GetRolesData, cb: (err: Error, roles: Role[]) => void): void;
    getRoles(params: GetRolesDataPaged): Promise<RolePage>;
    getRoles(params: GetRolesDataPaged, cb: (err: Error, rolePage: RolePage) => void): void;

When trying to mock the getRoles method, I get the following message: Argument of type X is not assignable to parameter of type 'never'.

I think this is because ts-jest is expecting me to override the getRoles(cb: (err: Error, roles: Role[]) => void): void; which is not what I am trying to do. I want to mock its result with .mockResolvedValue.

To Reproduce

import { ManagementClient } from 'auth0';
import { MockedObjectDeep } from 'ts-jest/dist/utils/testing';
import { mocked } from 'ts-jest/utils';

jest.mock('auth0');

describe('UsersService', () => {
    let manageClient: MockedObjectDeep<ManagementClient>;

    beforeEach(() => {
        jest.clearAllMocks();

        manageClient = mocked(
            new ManagementClient({
                domain: 'DOMAIN',
                clientId: 'CLIENT_ID',
                clientSecret: 'CLIENT_SECRET',
            }),
            true
        );
    });

    describe('updateUserRoles', () => {
        beforeEach(() => {
            manageClient.getRoles.mockResolvedValue([]); // error will show here
        });

        it('should test something', async () => {
            //    ...
        });
    });
});

Expected behavior

Typings should support method overriding.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions