Javascript 在带有Jest的模拟函数上使用“new”

Javascript 在带有Jest的模拟函数上使用“new”,javascript,unit-testing,mocking,jestjs,Javascript,Unit Testing,Mocking,Jestjs,我试图在对模拟函数使用new时模拟返回值: const myMock = jest.fn(); myMock.mockReturnValueOnce('some_string'); const result = new myMock(); 问题是newmymock()返回{}(空对象),而不是我指定的返回值 我查阅了文档,但找不到其他可使用的函数。当与new一起使用时,是否有其他函数可以用来生成结果?似乎没有任何方法可以直接使用Jest API模拟new myMock()的结果 相反,我最终做

我试图在对模拟函数使用
new
时模拟返回值:

const myMock = jest.fn();
myMock.mockReturnValueOnce('some_string');
const result = new myMock();
问题是
newmymock()
返回
{}
(空对象),而不是我指定的返回值


我查阅了文档,但找不到其他可使用的函数。当与new一起使用时,是否有其他函数可以用来生成结果?

似乎没有任何方法可以直接使用Jest API模拟
new myMock()的结果

相反,我最终做的是将它包装在一个函数中并传递它的参数。我还必须确保生成的值是一个对象(这是一个JavaScript的东西)

结果是这样的:

const mockedValue = { d: 'DUMMY' };
const mock = jest.fn().mockReturnValueOnce(mockedValue);
const myMock = (a, b) => mock(a, b); // a, b are parameters. Use more or less as needed
const result = new myMock(); // { d: 'DUMMY' }
包装函数只是一个普通函数,但当使用
new
调用它时,我可以将
mock
的结果作为新值返回。我传递所使用的参数,以确保使用
.toBeCalledWith()
的检查按预期工作