用于单元测试的包装类

时间:2015-11-26 15:05:41

标签: java junit mockito wrapper hybris

我可以编写一些单元测试和重构。我们正在使用Hybris。您经常可以看到的是Trainwrecks。例如:null[D] null[D] null[D] 等等。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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