[Unit testing Express] Test Express route

server.js:

import itemRouter from './resources/item/item.router'
export const app = express()
app.use('/api/item', itemRouter)

item.router.js

import { Router } from 'express'
const router = Router()

const mockController = (req, res) => {
  res.json({ message: 'ok' })
}
// /api/item
router
  .route('/')
  .get(mockController)
  .post(mockController)

// /api/item/:id
router
  .route('/:id')
  .get(mockController)
  .put(mockController)
  .delete(mockController)

export default router

 

test:

import router from '../item.router'

describe('item router', () => {
  test('has crud routes', () => {
    const routes = [
      { path: '/', method: 'get' },
      { path: '/:id', method: 'get' },
      { path: '/:id', method: 'delete' },
      { path: '/:id', method: 'put' },
      { path: '/', method: 'post' }
    ]

    routes.forEach(route => {
      const match = router.stack.find(
        s => s.route.path === route.path && s.route.methods[route.method]
      )
      expect(match).toBeTruthy()
    })
  })
})

 

posted @ 2022-08-22 19:14  Zhentiw  阅读(16)  评论(0)    收藏  举报