gpt4 book ai didi

Typescript 期望 mockImplementation 为所有方法和属性提供模拟

转载 作者:行者123 更新时间:2023-12-04 10:31:34 28 4
gpt4 key购买 nike

我正在使用 typescript + jest,并且在创建模拟实现时遇到了一些类型检查问题。例如,我想模拟 Credentials来自 aws-sdk 的对象:

import { Credentials } from "aws-sdk";

jest.mock("aws-sdk");

const CredentialsMock = mocked(Credentials);

describe("Foo test", () => {
beforeAll(() => {
CredentialsMock.mockImplementation(() => { /*** <--- Type checking fails here ***/
return {
get: jest.fn()
}
});
});
});

我遇到的问题是类型检查器希望我为 Credentials 的每个方法/属性提供模拟。类型,当我只想模拟一个方法时。具体错误是:

TS2345: Argument of type '() => { get: jest.Mock; }' is not assignable to parameter of type '(accessKeyId: string, secretAccessKey: string, sessionToken?: string | undefined) => Credentials'.

Type '{ get: Mock; }' is missing the following properties from type 'Credentials': getPromise, needsRefresh, refresh, refreshPromise, and 5 more.



有没有办法让 typescript 在这里快乐?

最佳答案

当提供与原始参数或返回值不同的模拟实现时,我发现使 typescript 愉快的一种方法是将模拟实例包装在 type assertion 中。 .假设 mocked(Credentials)在您的示例中返回 jest.MockInstance ,类型断言将如下所示:

    (CredentialsMock as jest.MockInstance<any, any>).mockImplementation(() => {
return {
get: jest.fn()
}
});

关于Typescript 期望 mockImplementation 为所有方法和属性提供模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60399599/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com