我有一个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值的异常。
你传递的结果是 fetchData
函数调用 expect
函数。而不是调用 fetchData
内功 expect
函数,传一个函数给 expect
功能。
it('should catch exception', async () => {
await expect(() => fetchData(inValidUserName)).to.throw('Invalid params')
})
使用 try/catch
it('should catch exception', async () => {
try {
await fetchData(inValidUserName);
} catch(error) {
expect(error).to.exist;
}
})