gpt4 book ai didi

java - 单元测试的包装类

转载 作者:行者123 更新时间:2023-11-30 07:46:07 25 4
gpt4 key购买 nike

我可以编写一些单元测试并进行重构。我们正在使用 Hybris。你经常看到的是火车残骸。例如:cmsSiteService.getCurrentSite().getSlaveSalesOrganization()等等。

现在编写单元测试并模拟响应,在这种情况下,我首先模拟 CurrentSite 并声明 doReturn(currentSite).when(cmsSiteService.getCurrentSite)然后doReturn(slaveSalesOrganization).when(currentSite).getSlaveSalesOrganization() .

这个示例相当短,但是对于 cmsSiteService,它会发生在整个项目中。由于 cmsSiteService 是第三方 Hybris 类,因此我认为编写一个继承 CMSSiteService 类所有内容的包装类会很好。在那里我可以编写一个方法 getSlaveSalesOrganizationFromCurrentSite(CMSSiteService cmsSiteService) ,我将在其中调用上面的所有内容。

这是推荐的还是有更好的设计解决方案?

最佳答案

听起来您走在正确的道路上。您正在做的是重构代码以更好地遵守 Law of Demeter ,也称为“最少知识原则”。像您所说的那样挖掘对象链是一种反模式,其原因正是您所遇到的:当对象紧密耦合时,它们很难修改和测试。

理想情况下,如果允许修改该代码,您可以将 getSlaveSalesOrganizationFromCurrentSite 方法添加到 CMSSiteService 类中。我认为创建一个包装器来简化丑陋的界面是第二个不错的选择。这将是 Adapter pattern 的实现。这是防止您自己的代码与(其他人的)蹩脚代码紧密耦合的好方法。

关于java - 单元测试的包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com