Node.js 如何模拟模块函数,以便在从代码中的某个地方调用时引发异常
开玩笑的是,我想测试这样编写的express apiNode.js 如何模拟模块函数,以便在从代码中的某个地方调用时引发异常,node.js,unit-testing,jestjs,mocking,Node.js,Unit Testing,Jestjs,Mocking,开玩笑的是,我想测试这样编写的express api router.get('/api-does-something', api.middleware, async (req, res) => { try { const { destructSomeData } = req.fromValue; const responseData = await someModule.getSomething(destructSomeData); res.json(respo
router.get('/api-does-something', api.middleware, async (req, res) => {
try {
const { destructSomeData } = req.fromValue;
const responseData = await someModule.getSomething(destructSomeData);
res.json(responseData);
} catch (e) {
errorModule.error(
res,
errorCodes.SERVER_ERROR,
e
);
}
});
在jest中,我知道如何测试api的try-catch部分,但我不知道如何模拟someModule.getSomething(destructSomeData)
,这样它就会抛出一个异常,这样我就可以用jest测试是否抛出了异常
因此,我的问题是如何模拟someModule.getSomething(destructSomeData)以使其在这个api中引发异常?您只需要在测试文件中模拟模块并模拟实现,如下所示
// test file
const someModule = require('./pathTo/someModule')
jest.mock('./pathTo/someModule')
describe('test', ()=>{
it('should blow up on getSomething', async () => {
someModule.getSomething.mockImplementation(()=> Promise.reject(new Error('Blew up')))
// continue with test... it should blow up!
})
})