gpt4 book ai didi

reactjs - Jest SpyOn 选择正确的重载

转载 作者:行者123 更新时间:2023-12-05 04:47:04 25 4
gpt4 key购买 nike

我确实有一个具有 2 个重载方法的类。

  public static create<M extends Model>(
this: ModelStatic<M>,
values?: M['_creationAttributes'],
options?: CreateOptions<M['_attributes']>
): Promise<M>;
public static create<M extends Model>(
this: ModelStatic<M>,
values: M['_creationAttributes'],
options: CreateOptions<M['_attributes']> & { returning: false }
): Promise<void>;

在我的单元测试中,我尝试使用 jest.spyOn模拟第一种方法,但是开 Jest 只看到返回 Promise<void> 的方法.

const mockInsightCreate = jest.spyOn(Insight, "create");
mockInsightCreate.mockReturnValue(Promise.resolve()); // here I need to return an object of type - Insight

有没有办法指示spyOn选择返回 Promise<M> 的第一个方法?

import {
Model,
} from "sequelize-typescript";

...

export default class Insight extends Model<Insight> {

最佳答案

我知道这个问题很老了,但下面是我对遇到同样问题但可能偶然发现的人的回答。

目前没有办法指示 spyOn 应该使用哪个重载签名。一种解决方案是将该值转换为 spyOn 期望的值。

mySpy.mockReturnValue(Promise.resolve(myObj) as unknown as void);
mySpy.mockResolveValue(myObj as unknown as void);

但是,我个人更喜欢尽可能避免强制输入系统。不需要任何输入柔道的另一种解决方法是模拟整个方法实现。

mySpy.mockImplementation(() => Promise.resolve(myObj));

关于reactjs - Jest SpyOn 选择正确的重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68630707/

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