请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

测试报错

// 重复注册
		test('重复注册用户,应该失败', async () => {
		  const res = await server
		      .post('/api/user/register')
		      .send(testUser)
		  expect(res.body.errno).not.toBe(0)
		})

跑测试用例的时候,上面这一段代码运行的时候出现红色
图片描述

根据错误提示找到了controller/user.js 的代码

try {
    await createUser({
        userName,
        password: doCrypto(password),
        gender
    })
    return new SuccessModel()
} catch (ex) {
    console.error(ex.message, ex.stack)
    return new ErrorModel(registerFailInfo)
}

老师的代码也使用了console.error(ex.message, ex.stack),为什么我的这里会报错,老师的视频里面演示没有报错

================================================================

补充

经过试验,注释掉console.error(ex.message, ex.stack),就没有红色部分。
有红色部分的时候,测试用例也是可以通过的,并且网页创建用户、检查用户的所有功能都是正常的。
貌似在运行npm run test 的时候,代码里面的console.log或者console.error都会打印出来,不是真正意义上的“错误”

图片描述

图片描述

正在回答

1回答

报错不是因为我用了 console.error ,如果单元测试有报错,即便是删掉 console.error 它也会照样报错。跟这一行没关系。

这里是创建用户时报错,可以运行起服务来,用网页测一测创建用户,是否报错?

0 回复 有任何疑惑可以回复我~
  • 提问者 光天化日之下 #1
    删掉就不报错了。代码中打印的内容在测试用例的时候会打印出来。你看我的问题最后面补充的截图
    回复 有任何疑惑可以回复我~ 2020-03-23 21:13:52
  • 双越 回复 提问者 光天化日之下 #2
    嗯呢,看到了。猜测这可能是 jest 的一个机制,识别到有错误信息输出,就算是报错。不过我在实际开发中,确实没有遇到过这种情况。不过,这个问题的关键是,这次单元测试走到了 catch 里,是否符合你的预期?
    回复 有任何疑惑可以回复我~ 2020-03-23 22:01:54
  • 提问者 光天化日之下 回复 双越 #3
    测试重复注册,走到catch也算是符合预期吧,谢谢老师
    回复 有任何疑惑可以回复我~ 2020-03-23 23:04:42
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信