如何让未兑现的承诺在玩笑中落空



考虑这个函数:

aPromise = require('axios');    
function middleware(callback) {
  axios.get('/api/get')
    .then(callback)
    .catch(callback);
}

考虑这个测试:

const callback = (err) => {
  expect(isError(err)).toBe(true);
  done();
};
middleware(callback);

isError是lodash函数

考虑aPromise是我想要测试的东西。如果承诺总是解决,这个测试不应该通过。但它会的!这是因为promise的catch实际上捕获了expect异常。

我的问题是:当expect在承诺的then处理程序中抛出错误时,如何不捕获承诺的catch处理程序中的错误?

请注意,我没有使用async/await

您需要创建一个失败的承诺,并且需要在测试中返回该承诺。请看一下关于测试承诺的文件。

aPromise = require('axios');    
jest.mock('axios', () => {
  get: ()=> jest.fn() //initialy mock the get function
})
it('catch failing promises',() = > {
    const result  = Promise.reject('someError'); //create a rejected promises
    aPromise.get.mockImplementation(() => result)// let `get` return the rejected promise
    const callback = jest.fn()
    middleware(callback)
    return result
        .then (()=>{
          expect(callback).toHaveBeenCalledWith('someError');
        })
})

相关内容

  • 没有找到相关文章

最新更新