[Unit testing] Simplify Assertions on Error Messages with toMatchInlineSnapshot

Let’s add a test for an edge case that responds with an error message. In this lesson we’ll talk about the value of using the toMatchInlineSnapshot assertion for error messages.

 

Code:

复制代码
async function createListItem(req, res) {
  const {
    user: {id: ownerId},
  } = req
  const {bookId} = req.body
  if (!bookId) {
    res.status(400).json({message: `nwo bookId provided`})
    return
  }
  const [existingListItem] = await listItemsDB.query({ownerId, bookId})
  if (existingListItem) {
    res.status(400).json({
      message: `User ${ownerId} already has a list item for the book with the ID ${bookId}`,
    })
    return
  }

  const listItem = await listItemsDB.create({ownerId, bookId})
  res.json({listItem: await expandBookData(listItem)})
}
复制代码

 

Test:

复制代码
test('createListItem return a 400 error with no bookId', async () => {
  const req = buildReq()
  const res = buildRes()

  await listItemsController.createListItem(req, res)

  expect(res.status).toHaveBeenCalledWith(400)
  expect(res.status).toHaveBeenCalledTimes(1)
  //expect(res.json).toHaveBeenCalledWith({message: `No bookId provided`})
  expect(res.json.mock.calls[0]).toMatchInlineSnapshot(`
    Array [
      Object {
        "message": "no bookId provided",
      },
    ]
  `)
  expect(res.json).toHaveBeenCalledTimes(1)
})
复制代码

 

posted @   Zhentiw  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-08-16 [Linear Algebra] Inverse and Transpose
2020-08-16 [Linear Algebra] Matrix-Matrix Multiplication
2019-08-16 [GraphQL] Set variable and default value & alias
2018-08-16 [Debug] Node-sass
2018-08-16 [Java Sprint] AutoWire
2018-08-16 [Java Sprint] Spring XML Configuration : Constructor Injection Demo
2017-08-16 [Angular] Using the Argon 2 Hashing Function In Our Sign Up Backend Service
点击右上角即可分享
微信分享提示