问题描述
我有两个路由的文件。
routes / index.js
const express = require('express')
const router = express.Router()
router.get('',(req,res,next) => {
try {
res.status(200).render('../views/')
} catch (error) {
next(error)
}
})
router.get('*',next) => {
try {
res.status(404).render('../views/not-found')
} catch (error) {
next(error)
}
})
module.exports = router
我想测试捕获分支。显而易见的问题之一是,我无法伪造router.get的回调所做的事情,因为这样我的测试将毫无意义,我将修改我想测试的东西。
我可以向这些特定的路由发送“超级测试”请求,但随后我无法控制发生的情况。我只想避免创建硬编码的路由,这样只能检查下一个函数是否调用了中间件。如果我理解正确,那么在try块中是否还有其他事情(例如数据库查询)发生,而不是我可以模拟那个来引发错误。
但是我在那里没有发生任何其他事情。这是我无法解决的问题:如果我模拟服务器的功能,那么我不会测试已经拥有的东西,而是测试其他东西,所以这样做毫无意义。也许我误解了事情的运作方式,但据我所知,唯一的选择就是模拟某种形式的res.status或res.render(对它们进行存根,以便它们引发错误),某种程度上模拟Supertest的行为,但是我不知道该怎么做。
任何帮助将不胜感激!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)