點燈坊

失くすものさえない今が強くなるチャンスよ

模擬 Error Response

Sam Xiao's Avatar 2021-05-21

MSW 亦能模擬 Error Response 提供 Client 端做測試。

Version

MSW 0.28.2

API Function

api/getBook.js

import axios from 'axios'

export default id => axios.get(`/book/${id}`)

使用 axios.get() 呼叫 API。

Mock Function

mock/getBook.js

export default rest.get('/book/:id', (req, res, ctx) => {
  let { id } = req.params

  return res(
    ctx.status(400),
    ctx.json({
      'code': 20001,
      'errMsg': `Book of ID: ${id} is N/A`,
    })
  )
})

第 5 行

ctx.status(400),

cox.status() 定義回傳 HTTP status。

第 6 行

ctx.json({
  'code': 20001,
  'errMsg': `Book of ID: ${id} is N/A`,
})

回傳資料依然定義在 ctx.json() 內。

Conclusion

  • 回傳 error response 與正常回傳差異不大,只需改變 ctx.status(),並在 ctx.json() 回傳 data 即可

Reference

Mock Service Worker, Mocking Rrror Responses