Node.js 如何模拟模块函数,以便在从代码中的某个地方调用时引发异常

Node.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

开玩笑的是,我想测试这样编写的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(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!
 })
})