如何使用chai和mocha来验证javascript抛出的异常?

问题描述 投票:0回答:2

我有一个MongoDB查询函数,其中查询参数被验证以下是该函数注:用户是mongoose模型。

function fetchData(uName)
{
    try{
        if(isParamValid(uName))
        {
            return user.find({"uName":uName}).exec()
        }
        else {
            throw "Invalid params"
        }
    }
    catch(e)
    {
        throw e
    }
}

为了用无效的用户名值进行测试,我为此写了测试代码,使用摩卡、咖、咖-如承诺的函数进行承诺。

describe('Test function with invalid values', async ()=>{
    it('should catch exception', async () => {
        await expect(fetchData(inValidUserName)).to.throw()
    })

    it('should catch exception', async () => {
        await expect(fetchData(inValidUserName)).to.throw(Error)
    })

    it('should catch exception', async () => {
        await expect(fetchData(inValidUserName)).to.be.rejectedWith(Error)
    })

    it('should catch exception', async () => {
        await expect(fetchData(inValidUserName)).to.be.rejected
    })
})

他们都没有通过测试,我如何写一个测试用例来处理无效userName值的异常。

javascript node.js mocha chai chai-as-promised
2个回答
1
投票

你传递的结果是 fetchData 函数调用 expect 函数。而不是调用 fetchData 内功 expect 函数,传一个函数给 expect 功能。

it('should catch exception', async () => {
    await expect(() => fetchData(inValidUserName)).to.throw('Invalid params')
})

0
投票

使用 try/catch

it('should catch exception', async () => {
    try {
      await fetchData(inValidUserName);
    } catch(error) {
      expect(error).to.exist;
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.