我是拉格姆世界的新手 . 我有一个方案可以使用 unit tests . 我在Lagom / Java框架和Cassandra数据库下工作 . 我有两种不同的服务:
-
设备服务
-
用户服务
我需要一个智能访问场景 . 用户必须注册其设备才能获得访问权限 . 此机制由设备服务中的WBS connect()管理 . 所以这个WBS处理:
-
如果设备不可用:它将其存储在DB中(出于安全原因)并且不允许访问
-
如果设备已注册:它会记录访问日期并授权访问
我的实现准备就绪,它运行正常 . 但我的问题是如何在单元测试方面处理这个问题 . 特别是对于自动化访问方案,因为在测试开始时,我没有在我的DB /持久性中注册设备 .
-
我是否需要调用WBS Add()将设备添加到我的数据库/持久性中,然后调用WBS connect()来模拟访问权限?
-
是否有解决方案在不依赖数据库的情况下运行WBS connect()?
-
如果我的WBS依赖于另一个服务(用户服务),如何管理单元测试?我是否必须在设备服务的单元测试中重新实施用户服务?
1 回答
最好的我可以告诉,Lagom团队doesn't believe in traditional unit testing服务;但是,有一些单元式的方法来测试Lagom服务 . 传统上,这是如何在"unit"级别上规定测试的:
域对象测试
测试外部命令,事件和代理
持久实体测试
测试持久化实体尝试处理实体命令时会发生什么
单项服务测试
测试您的服务可以处理快乐/不快乐的路径
消息代理测试
测试您的服务发布或接收kafka消息
您可能知道,Lagom规定了Spring风格的API / Impl分叉 . 因此,域对象往往属于API测试,而其他对象属于Impl测试 . 从DDD的角度来看,这应该是有意义的 .
没有太多想象力,您可能会看到扩展单个服务测试可以跨越多个服务测试或集成测试 .