MongoDB 的单元测试查询
Unit testing queries with MongoDB
我目前正在构建休息 api,我正在努力寻找对每条路线进行单元测试的最佳方法。
路由处理程序执行各种操作,其中之一是执行对 mongodb 的查询。我可以使用存根对路由处理程序进行单元测试,但是如果我正在测试查询,我无法对查询本身进行存根,我需要有一个内存中的 mongodb,我可以为每个测试重置和插入新数据.
你们如何测试查询?我在想确保查询完成我需要的唯一真正方法是使用安装在测试机器上的真实 mongodb 数据库(通常在用于开发的同一台机器上)。
是的,就像关系数据库一样,你需要有真正的基础。如果 mongo 提供内存中自动创建的版本,那就很容易了。如果没有,那么每个开发人员在运行集成测试之前都必须有 运行 mongo。对于 CI 你可以有一个专用的 mongo 但是你必须防止并发访问(模式创建,多个事务等)。如果需要,您还应该在每次测试之前实现自动创建模式和清空数据库。在关系数据库中回滚通常就足够了。如果还不够,那么修剪所有表格会有所帮助。尽管我们不得不手动实施它,因为我们找不到任何现有工具
我目前正在构建休息 api,我正在努力寻找对每条路线进行单元测试的最佳方法。
路由处理程序执行各种操作,其中之一是执行对 mongodb 的查询。我可以使用存根对路由处理程序进行单元测试,但是如果我正在测试查询,我无法对查询本身进行存根,我需要有一个内存中的 mongodb,我可以为每个测试重置和插入新数据.
你们如何测试查询?我在想确保查询完成我需要的唯一真正方法是使用安装在测试机器上的真实 mongodb 数据库(通常在用于开发的同一台机器上)。
是的,就像关系数据库一样,你需要有真正的基础。如果 mongo 提供内存中自动创建的版本,那就很容易了。如果没有,那么每个开发人员在运行集成测试之前都必须有 运行 mongo。对于 CI 你可以有一个专用的 mongo 但是你必须防止并发访问(模式创建,多个事务等)。如果需要,您还应该在每次测试之前实现自动创建模式和清空数据库。在关系数据库中回滚通常就足够了。如果还不够,那么修剪所有表格会有所帮助。尽管我们不得不手动实施它,因为我们找不到任何现有工具