gpt4 book ai didi

node.js - 单元测试查询数据库的方法

转载 作者:行者123 更新时间:2023-11-28 20:28:19 25 4
gpt4 key购买 nike

所以我创建了一个接受 ID 的函数,它通过存储库从返回的数据内部查询数据库,根据不同的场景对数据进行突变,然后我们返回数据。

我该如何对这个函数进行单元测试? 我是否会在我的存储库层上存入 find 方法以返回数据,以便我不依赖于连接到数据库?

最佳答案

我会争辩说,您只能对可单元测试的代码进行单元测试。我对单元可测试代码的定义是展示这些属性的代码:

  1. 它从输入中获取所需的一切
  2. 它的所有工作都通过返回值(或抛出异常)来表达
  3. 它不会产生任何副作用

您描述的代码通过访问数据库违反了#1。

要直接回答您的问题,您可以模拟数据库调用,该模拟会向您的函数提供预期数据,以便您可以对其进行变异并将其与预期输出进行比较。

但我认为真正正确的答案是重构您的代码,应用单一职责原则。您的测试代码正在做两件事(进入数据库并改变结果),而不是只做一件事。

我会分解数据库部分并将其分配为其他人的工作。那么您的测试代码可以将该数据库结果作为输入,它唯一的工作就是改变该数据并返回结果。

恕我直言,这将使它可以进行单元测试。当你对它进行单元测试时,你根本不需要模拟数据库,因为你可以简单地编写你想要改变的数据并为它提供函数。

关于node.js - 单元测试查询数据库的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42938197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com