AEM 6.3, wcm.io: имитация LiveRelationshipManager

Я хочу протестировать сервис, который сам по себе ссылается на LiveRelationshipManager:

@Reference
private LiveRelationshipManager liveRelationshipManager;

Реализация LiveRelationshipManager скрыта, у меня есть только API. Как я могу зарегистрировать его в своем aemContext, например, в моем собственном LanaguageService:

aemContext.registerInjectActivateService(new LanguageService());

Одним из решений, которое я нашел, было создание фиктивного класса:

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

Но как мне предотвратить его использование в моем реальном приложении и только в моих модульных тестах? Или есть лучший способ?

Заранее спасибо!


person Jdruwe    schedule 21.02.2018    source источник


Ответы (1)


Если вы хотите использовать фиктивный класс только в своих тестах, вы не должны не аннотировать его с помощью @Component. Просто создайте фиктивную реализацию, а затем используйте

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

чтобы добавить его в ваш контекст.

person Daniel Platon    schedule 22.02.2018