当前位置: 首页 > 知识库问答 >
问题:

如何编写依赖于其他服务或数据库的服务的单元测试

巩枫
2023-03-14

共有1个答案

侯善
2023-03-14

我会说,如果你想做TDD,那么这不是“正确”的方式,因为正如你所说的,你将执行集成测试。不过,也许您不想做TDD和集成测试对您来说已经足够好了,但要回答这个问题:这不是**统一**测试代码的适当方法。

我会说这取决于您的数据访问层中有什么。例如,如果您实现存储库,您可能需要编写一些测试

您希望确保给定一个从存储库中检索到的实体,编辑该实体的某些属性并保持更改实际上将保存修改,而不是创建一个新的实体。现在:您可能认为这是一个集成测试,但这确实取决于您的代码设计得有多好。例如,存储库可能只是低级别ORM之上的一个额外的逻辑层。在这种情况下,当测试save方法时,您要做的就是断言正确的方法是用正确的参数在存储库中注入的ORM服务上调用的。

在访问数据时,可能会出现一些问题,例如与数据库的连接中断,或者数据的格式不像预期的那样,或者反序列化问题。如果您希望提供一些良好的错误处理,并且可能创建自定义异常并根据上下文向其添加更多信息,那么您肯定希望编写测试以确保corrext信息被传播

在另一方面

如果您的DAL只是几个封装了一个不可模拟的ORM的类,并且您没有任何逻辑,那么您可能不需要测试,但这种情况似乎并不经常发生,您几乎总是会有一些逻辑可能出错,并且您想要测试。

 类似资料:
  • 如何使服务容器在依赖容器完成后退出?

  • 问题内容: 我正在测试服务A,但是服务A取决于服务B(即服务B已注入服务A)。 我已经看到了这个问题,但是我的情况有所不同,因为我认为_模拟_ 服务B而不是注入服务B的实际实例更有意义。我将用茉莉间谍对其进行模拟。 这是一个示例测试: 我得到的错误是: 错误:未知提供程序:serviceBProvider 我该怎么做? 问题答案: 实际上,在AngularJS中,依赖注入使用“最后获胜”规则。因此

  • 我现在的码头工人。yml- 我的码头工人。yml文件包含2个服务。我已经指定postgrasdb服务在python应用程序服务使用之前启动,但是docker没有按照指定的顺序运行服务。如何让postgrasdb服务在python应用程序服务之前运行?我正在运行命令。

  • 在我的项目中,我在进行单元测试时遇到了问题。一个问题是,仅仅进行联调就可以更快地编写,并且还可以测试组件是否真正协同工作。单元测试新颖的“算法”之类的似乎要容易得多。单元测试服务类感觉是错误和无用的。 我使用mockito来模拟spring数据存储库(以及DB访问)。问题是,如果我告诉模拟存储库在方法调用getById时返回实体A,它显然会返回实体A,服务也会返回实体A。是的,该服务做了一些额外的

  • 我正在尝试对服务方法进行单元测试。服务方法调用spring数据存储库方法来获取一些数据。我想模拟这个存储库调用,并自己提供数据。如何做到这一点?在Spring Boot文档之后,当我模拟存储库并在测试代码中直接调用存储库方法时,模拟工作正常。但是,当我调用服务方法时,反过来调用存储库方法,mocking就不起作用了。下面是示例代码: 服务级别: 测试等级:

  • 本文向大家介绍AngularJS 单元测试服务,包括了AngularJS 单元测试服务的使用技巧和注意事项,需要的朋友参考一下 示例 服务编号 考试 跑!