java - 模拟具有许多依赖项的嵌套服务类
问题描述
我有一堆服务类,看起来都差不多,或者类似的。
@Service
public class ServiceA {
private RepositoryA repA;
private RepositoryB repB;
private DependencyC depC;
private DependencyD depD;
private ServiceB serviceB;
@Autowired
public ServiceA(RepositoryA repA, RepositoryB repB, DependencyC depC, DependencyD depD, ServiceB serviceB) {
this.repA = repA;
....
}
}
现在我想在我的测试类中使用这些服务而不启动 Spring。如果我在应用程序上下文中使用 bean,测试会花费很长时间。我想模拟服务类,但由于深度嵌套的结构,我不知道如何。最简单的方法是模拟 ServiceA 使用的所有存储库、依赖项和服务,并将它们自己注入到测试类中,但这似乎不对,因为我必须对 ServiceB 做同样的事情。
解决方案
情侣选择:
ServiceB
也嘲笑- 做你所描述的,因为无论如何你都会这样做以编写测试,
ServiceB
这样你就可以重用该工作 - 构建一个充满模拟的替代 Spring 上下文并将其用于测试
我通常选择 2。它不纯,因为 的正确性ServiceA
取决于 的正确性ServiceB
,但编写、管理和理解的测试代码较少。
推荐阅读
- python - CNN 中的扩展因子“k”是什么?
- python-3.x - 如何在每列上创建具有不同随机数的数据框?
- javascript - 括号 {} 如何在响应中的 promise 对象中工作
- java - 在 Javafx 中更新或删除后如何刷新数据库表视图?
- web-worker - 对于某些 OffscreenCanvas 功能,Web Worker 是否会在主线程上阻塞?
- jmeter - 如何在 JMeter 中向子采样器添加断言
- angular - 如何在 Jasmine 中为 localStorage 值编写单元测试用例
- javascript - 如何使具有动态内容的reactstrap模态可调整大小和可拖动?
- javascript - 想要在点击搜索按钮时添加搜索结果
- mozilla - Notification.requestPermission() 在 Mozilla 上抛出错误