AEM 6.3,wcm.io:模拟LiveRelationshipManager

时间:2018-02-21 13:22:23

标签: mocking adobe aem sling

我想测试一个本身引用LiveRelationshipManager的服务:

@Reference
private LiveRelationshipManager liveRelationshipManager;

LiveRelationshipManager的实现是隐藏的,我只有api。我如何在我的aemContext中注册它,例如我自己的LanaguageService:

aemContext.registerInjectActivateService(new LanguageService());

我找到的一个解决方案是自己创建一个模拟类:

@Component(service = LiveRelationshipManager.class)
public class MockLiveRelationshipManager implements LiveRelationshipManager {

但是如何防止它在我的实际应用程序中使用并且仅在我的单元测试中使用?或者有更好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您只想在测试中使用模拟类,则使用@Component对其进行注释。 只需创建模拟实现,然后使用

context.registerService(LiveRelationshipManager.class, new MockLiveRelationshipManager())

将其添加到您的上下文中。