Jestjs Jest mockResolvedValueOnce/mockReturnValueOnce访问函数参数

Jestjs Jest mockResolvedValueOnce/mockReturnValueOnce访问函数参数,jestjs,Jestjs,我想编写一个模拟函数,在每次调用时返回不同的值。我遇到的问题是,返回值取决于传递给函数的参数值 //something like this window.fetch = jest.fn(urlPath) .mockResolvedValueOnce(fetch({urlPath})) .mockResolvedValueOnce(fetch({urlPath, arg1: 1})); 我发现了这个,也许有帮助,但不确

我想编写一个模拟函数,在每次调用时返回不同的值。我遇到的问题是,返回值取决于传递给函数的参数值

//something like this
window.fetch = jest.fn(urlPath)
                   .mockResolvedValueOnce(fetch({urlPath}))
                   .mockResolvedValueOnce(fetch({urlPath, arg1: 1}));

我发现了这个,也许有帮助,但不确定它是否有效

import { when } from 'jest-when';

window.fetch = jest.fn(urlPath);
when(window.fetch).calledWith({urlPath, arg1: 1}).mockReturnValue('test');
await expect(window.fetch({urlPath, arg1: 1})).resolves.toEqual('test')

使用模拟实现。它允许您传递函数,并以细粒度的方式处理它


jest.mockImplementation((arg1,arg2)=>returnwhich(arg1,arg2))

我希望mockReturnValue能够访问arg1这样的参数,为什么mockReturnValue需要访问这些参数?您可以将arg1直接传递给mockReturnValue如何将arg1、urlPath传递给mockReturnValue?据我所知,当(window.fetch)调用时({'/api/v1/…',arg1:1})。mockReturnValue('/api/v1/…')