如何覆盖 Node js 控制器函数中定义的函数的测试用例覆盖率

如何使用 sinon 覆盖在 Node.js 中的控制器函数中定义的函数。

  1. route.js 文件会监听 /search api 调用并调用控制器函数
  2. 控制器搜索函数将调用通用 API 调用函数,该函数需要所有 API 调用详细信息,如 url、req、res、方法和回调函数。此搜索函数内部定义了一个函数 responseParser,我们将其作为 genericAPICall 参数传递给 successCallback 函数,该参数将由 genericAPICall 函数调用并进行解析来自 genericAPICall
  3. 的 API 响应

在这种情况下,responseParser 没有得到测试覆盖率,如何模拟它以得到覆盖率?

下面的代码

//route.js
const controller = reuqire('./controller.js')
router.get('/search',controller.search)

// genericFetch.js
const genericAPICall = (req,res,apiMethod,successCallback) => {
 //do some fetch
  //on success 444``` status call the successCallback function
  fetch('urs')
  .then(res => {
   successCallback(res)
  })
 }

//controller.js
search = (req,res) => {
 const responseParser = (response) => {
 // do something with response
  return response
}
utils.genericAPICall(
req,'GET',successCallback: responseParser
)}

//route.test.js
const utils = require( './utils.js')

describe('test the route',() => {
 beforeEach(()=>{
  sinon.stub(utils,'genericAPICall').resolves({statusCode: 200})
 })
it('test the search route',(done) => {
 chai
  .request(app)
  .get('/search')
  .set('token','test1234')
  .send({name: 'abcd'})
  .end(err,res) => {
    expect(res.statusCode).to.equal(```200```);
    done
  })
 })
})
aiqingchufeng2 回答:如何覆盖 Node js 控制器函数中定义的函数的测试用例覆盖率

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/729.html

大家都在问