使用Cucumber将输出发送到数据库时,如何测试组件?

胡安·维加(Juan Vega)

最近,我的团队中讨论了如何正确测试系统中输出存储在数据库中的组件的讨论。我们使用DDD创建系统,因此该组件最终与存储库进行通信,该存储库已实现与MongoDB进行通信的不同存储。作为测试框架,我们使用Cucumber,而用于测试的数据库是mongo的内存版本。

到现在为止,我们所有的场景都有一个命令作为输入,而输出是一个事件,因此我们的声明是在该事件上完成的。但是现在我们有了一个场景,其中处理事件并将结果存储在数据库中。发生这种情况后,可以使用rest调用来检索结果。

讨论的是测试这最后两种情况的方法。对于某些人来说,正确的方法是在事件处理后检查内存数据库,因为这是系统的输出。系统的最终部分是商店,它们必须进行测试以及作为场景的一部分。测试内存数据库包含的内容是正确的方法,因为商店仍在使用相同的生产就绪逻辑来写入输出。为了方便起见,我们将使用存储库来检索此数据,因为这种方式更容易,即使我们需要使用与手头场景无关的内容也是如此。

另一方面,对于某些人来说,我们不应该检查数据库,因为这是我们不应为测试而访问的另一个组件。相反,因为在这种情况下,rest调用只是检索数据,所以我们应该将rest调用用作测试的一部分,以验证输出。这样,我们的场景将包括这两个部分,即存储和检索,而不是拆分测试。

有没有正确的答案呢?我们在这里缺少点吗?谢谢。

马库斯·韦德格伦

我想说的是,通过REST调用进行验证是正确的方法。否则,它并不是真正的黑盒测试,而您的测试将取决于内部实现细节(您的数据库结构)。您通常希望查看您的应用程序对“外部世界”有什么影响,并且您的数据库不属于此IMO。

所有这些都假设您要创建的测试旨在成为黑盒测试。如果是集成测试(我猜是灰色框?),那么IMO使用存储库检查数据库可能是一个更好的主意。

如果打算用作单元测试,则应模拟组件的依赖关系。然后,您可以使用模拟来验证您的组件正确调用了存储库。

如果我误解了,请告诉我。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Cucumber将输出发送到数据库时,如何测试组件?

来自分类Dev

如何将tcpdump输出发送到数据库?

来自分类Dev

在使用jQuery将数据发送到数据库时,如何使按钮处于活动状态?

来自分类Dev

将渲染的组件输出发送到后端

来自分类Dev

如何将输出发送到stderr?

来自分类Dev

bash exec将输出发送到管道,如何?

来自分类Dev

将JSON发送到数据库时出错

来自分类Dev

编织时如何将输出发送到控制台而不是文档

来自分类Dev

使用bash将输出发送到文件时>的正式名称是什么

来自分类Dev

如何防止重新加载时将数据重新发送到数据库?

来自分类Dev

如何使用ajax jquery将arduino的串行输出发送到文本框

来自分类Dev

如何使用管道将“ ls-l”的输出发送到cp命令?

来自分类Dev

如何使用格式将Powershell脚本输出发送到打印机?

来自分类Dev

如何使用python将jar文件输出发送到json文件

来自分类Dev

使用意图将字符串发送到数据库时遇到麻烦

来自分类Dev

如何使用Jquery和Ajax将Json数据发送到数据库中?

来自分类Dev

如何使用Jquery和Ajax将Json数据发送到数据库中?

来自分类Dev

如何使用vue.js(ajax)将数据发送到数据库

来自分类Dev

如何使用php将表单内容发送到数据库

来自分类Dev

如何使用PHP将时间发送到MySql数据库?

来自分类Dev

如何使用 PHP 将 HTML 输入字段发送到我的 MySQLi 数据库?

来自分类Dev

如何使用nodejs读取串口数据并使用rs232电缆将输出发送到PHP服务器?

来自分类Dev

角度8:使用反应式表单将表单数据从子级输出发送到父级

来自分类Dev

如何将输出发送到标准输出到字符串

来自分类Dev

当您通过“res.render”将数据发送到 HTML 模板时,使用 Ajax 获取 Mongodb 数据库

来自分类Dev

将套接字输出发送到GUI时出现问题

来自分类Dev

将输出发送到文件时出现log4j2问题

来自分类Dev

hadoop方法将输出发送到多个目录

来自分类Dev

将unix输出发送到csv文件

Related 相关文章

  1. 1

    使用Cucumber将输出发送到数据库时,如何测试组件?

  2. 2

    如何将tcpdump输出发送到数据库?

  3. 3

    在使用jQuery将数据发送到数据库时,如何使按钮处于活动状态?

  4. 4

    将渲染的组件输出发送到后端

  5. 5

    如何将输出发送到stderr?

  6. 6

    bash exec将输出发送到管道,如何?

  7. 7

    将JSON发送到数据库时出错

  8. 8

    编织时如何将输出发送到控制台而不是文档

  9. 9

    使用bash将输出发送到文件时>的正式名称是什么

  10. 10

    如何防止重新加载时将数据重新发送到数据库?

  11. 11

    如何使用ajax jquery将arduino的串行输出发送到文本框

  12. 12

    如何使用管道将“ ls-l”的输出发送到cp命令?

  13. 13

    如何使用格式将Powershell脚本输出发送到打印机?

  14. 14

    如何使用python将jar文件输出发送到json文件

  15. 15

    使用意图将字符串发送到数据库时遇到麻烦

  16. 16

    如何使用Jquery和Ajax将Json数据发送到数据库中?

  17. 17

    如何使用Jquery和Ajax将Json数据发送到数据库中?

  18. 18

    如何使用vue.js(ajax)将数据发送到数据库

  19. 19

    如何使用php将表单内容发送到数据库

  20. 20

    如何使用PHP将时间发送到MySql数据库?

  21. 21

    如何使用 PHP 将 HTML 输入字段发送到我的 MySQLi 数据库?

  22. 22

    如何使用nodejs读取串口数据并使用rs232电缆将输出发送到PHP服务器?

  23. 23

    角度8:使用反应式表单将表单数据从子级输出发送到父级

  24. 24

    如何将输出发送到标准输出到字符串

  25. 25

    当您通过“res.render”将数据发送到 HTML 模板时,使用 Ajax 获取 Mongodb 数据库

  26. 26

    将套接字输出发送到GUI时出现问题

  27. 27

    将输出发送到文件时出现log4j2问题

  28. 28

    hadoop方法将输出发送到多个目录

  29. 29

    将unix输出发送到csv文件

热门标签

归档