gpt4 book ai didi

javascript - 执行模拟 Jest 回调参数

转载 作者:行者123 更新时间:2023-11-29 20:54:09 25 4
gpt4 key购买 nike

我需要执行一个参数,它是一个 Jest 模拟的回调。

在 jest 文档中,他们的回调示例是关于测试第一个回调的。我在需要测试的嵌套回调中有行为。在 promises 的例子中,他们使用了 resolvesrejects。嵌套回调有这样的东西吗?我目前正在执行模拟调用参数,我不确定这是否是推荐的方式。

被测系统:

function execute() {
globals.request.post({}, (err, body) => {
// other testable behaviors here.
globals.doSomething(body);
// more testable behaviors here. that may include more calls to request.post()
});
}

测试:

globals.request.post = jest.fn();
globals.doSomething = jest.fn();

execute();

// Is this the right way to execute the argument?
globals.request.post.mock.calls[0][1](null, bodyToAssertAgainst);

expect(globals.doSomething.mock.calls[0][1]).toBe(bodyToAssertAgainst);

我的问题在上面代码的注释中。这是执行作为模拟函数参数的回调的推荐方式吗?

最佳答案

因为您不关心您的 globals.request.post 方法的实现,您需要稍微扩展您的模拟以使您的测试工作。

const bodyToAssertAgainst = {};
globals.request.post = jest.fn().mockImplementation((obj, cb) => {
cb(null, bodyToAssertAgainst);
});

然后您可以继续期望 doSomething 是通过 bodyToAssertAgainst 调用的。此外,通过这种方式,您可以轻松测试您的 post 是否会抛出错误。

关于javascript - 执行模拟 Jest 回调参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50209318/

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