我正在尝试模拟同时充当对象和功能的对象的属性。这是代码:
index.js
const nock = require('nock');
async myFunc() {
nock.back.setMode('param1');
const { nockDone } = await nock.back('param1', 'param2');
nock.enableNetConnect('param1');
return nockDone;
}
module.exports { myFunc }
我的目标是模拟nock对象,我可以断言当调用myFunc
时,将用param1和param2调用nock.back
。
为此,我需要进行以下测试:
index.test.js
const nock = require('nock');
const subjectUnderTest = require('./index');
const nockBackImplementation = jest.fn();
nockBackImplementation.setMode = jest.fn();
const nockBackMock = jest.spyOn(nock, 'back');
nockBackMock.mockImplementation(() => nockBackImplementation);
describe('test', () => {
it('calls nock.back with the proper parameters', () => {
subjectUnderTest.myFunc();
expect(nockBackMock).toHaveBeenCalledWith('param1', 'param2');
});
});
由于某种原因,测试失败,表明尚未调用模拟函数,并且还会出现此错误:
UnhandledPromiseRejectionWarning: TypeError: nock.back.setMode is not a function
我不确定如何正确模拟nock
。