如何在 Jest 中模拟函数以及调度该函数的 .then 回调?

How to mock a function as well as .then callback that dispatches that function in Jest?

提问人:ignite-me 提问时间:11/15/2023 更新时间:11/15/2023 访问量:11

问:

我有以下代码,我正在尝试测试:

Promise.all)[
   dispatch(getSomethingA()).then(() => {
        return checkSomething() ? dispatch(getSomethingB()) : Promise.resolve();
      }),
   dispatch(getSomethingC())
])

我试图断言的是,所有调度都是按顺序调用的

getSomethingA()
getSomethingB()
getSomethingC()

是否可以模拟函数本身和同一函数的回调?我希望模拟只是返回一个数组,例如 - 所以本质上是扁平嵌套?.then["getSomethingA()", "getSomethingB()", "getSomethingC()"]

我尝试了类似的东西:

dispatch = jest
        .fn()
        .mockImplementationOnce(() => ({
          then: action => `${action} result`,
        }))
        .mockImplementation(action => `${action} result`);

但它会抛出 TypeError: dispatch(...)。则不是一个函数

jestjs 嘲讽

评论

1赞 novarx 11/16/2023
您能否提供一个可运行的问题示例?此外,目前尚不清楚您到底要测试什么。您是否使用框架,或者它来自哪里?dispatch

答: 暂无答案