gpt4 book ai didi

javascript - 监视 Jest 模拟

转载 作者:行者123 更新时间:2023-11-28 13:14:03 24 4
gpt4 key购买 nike

我正在尝试在 jest.mock 上做一个 spy ,(我不太喜欢解锁你想要的东西,我更喜欢“老派”方式)

这样我就可以进行以下测试:

jest.mock('node-fetch');
// ...
it('should have called the fetch function wih the good const parameter and slug', done => {
const slug = 'slug';
const stubDispatch = () => null;
const dispatcher = fetchRemote(slug);
dispatcher(stubDispatch).then(() => {
expect(???).toBeCalledWith(Constants + slug);
done();
});
});

这是我想要测试的代码(不完整,测试驱动):

export const fetchRemote = slug => {
return dispatch => {
dispatch(loading());
return fetch(Constants.URL + slug)
};
};

我的 fetch 模拟实现(实际上是节点获取)是:

export default () => Promise.resolve({json: () => []});

模拟效果很好,并且它很好地取代了通常的实现。

我的主要问题是,我如何监视那个模拟函数?我需要测试它是否已使用良好的参数调用,但我绝对不知道如何做到这一点。在测试实现中有一个“???”而且我不知道如何创建相关 spy 。

有什么想法吗?

最佳答案

在你的模拟实现中,你可以这样做

const fetch = jest.fn(() => Promise.resolve({json: () => []}));
module.exports = fetch;

现在在你的测试中你需要做

const fetchMock = require('node-fetch'); // this will get your mock implementation not the actual one
...
...
expect(fetchMock).toBeCalledWith(Constants + slug);

希望这有帮助

关于javascript - 监视 Jest 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40101513/

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