2016-09-22 6 views
0

저는 프로젝트를위한 슬링 모델로 몇 가지 작업을 해왔고 그 과정에서 두 개의 커스텀 인젝터를 만들었습니다. 구현 될 때 모든 것이 훌륭하게 작동합니다 (AEM에서 사용됨). 그러나 사용자 정의 인젝터를 테스트 할 때 실행되지 않습니다. 여기 커스텀 인젝터로 슬링 모델 테스트하기

내가 현재

// MyModel에

@Inheritable 
@CustomAnnotation("foo") 
private String _foo 

// 테스트 (라이브러리를 조롱 wcm.io 사용하여 테스트)

@Rule 
AemContext context = new AemContext(ResourceResolverType.RESOURCERESOLVER_MOCK); 

//required by the injector 
@Mock 
InheritanceService _inheritanceService; 

@Mock 
InheritableInjector _inheritanceInjector; 

@Before 
public void setup() { 
    context.registerService(InheritanceService.class, _inheritanceService); 
    context.registerService(InheritableInjector.class, _inheritanceInjector); 

    context.addModelsForPackage("com.package.example.models"); 

    //use this resource in tests to adaptTo(MyModel.class) 
    _resource = context.load().json("myJson.json", "/myPath"); 
} 

... tests 
을 설정 한 내용의 예

테스트가 컴파일되고 실행되지만 인젝터가 실행되고 있지 않습니다. 컨텍스트에 등록 된 Injector의 종속 서비스가 없으면 오류가 발생하기 때문에 등록 된 것입니다. 내가 그것을 통해 디버깅 할 때, 중단 점 중 아무도 맞지 않습니다. 내가 "Inheritable"어노테이션을 어딘가에 등록 할 필요가 있는지 또는 누군가가 커스텀 인젝터를 어떻게 실행할 수 있는지에 대한 일반적인 정보가 있는지 궁금합니다.

고맙습니다.

답변

0

제 오류를 알아낼 수있었습니다. 따라서 Sling Model Injectors에 대해 기억해야 할 중요한 점은 OSGI 서비스 일 뿐이라는 것입니다.

정상적인 서비스처럼 그들을 치료하고 나서 인젝터에 @InjectMocks으로 주석을다는 것을 기억하면 오류를 수정해야했습니다.

다음은 훌륭하게 작동합니다.

@Mock 
InheritanceService _inheritanceService; //injector dependency 

@InjectMocks 
InheritanceInjector _inheritanceInjector; 

@Before 
public void setup() { 
    context.registerService(InheritanceService.class, _inheritanceService); 
    context.registerService(InheritableInjector.class, _inheritanceInjector); 
} 

이 문제를 해결할 수있는 사람에게 도움이되기를 바랍니다. 누구든지이 답변을 더 잘 만들 수 있다면 언제든지 답장/수정하십시오.

+0

안녕하세요. Brodie, 맞춤 분사기 테스트와 비슷한 문제가 발생했습니다. 커스텀 인젝터가 나에 의해 구현되지 않았기 때문에 나의 케이스가 당신과 꽤 다르지 만, ACS AEM Commons의 @AemObject. 의견을 작성하는 것이 흥미로울 것입니다. 여기에 공유 된 코드의 문제점을 이해하는 데 도움이 될 수 있습니다. https://stackoverflow.com/questions/46993268/sling-model-unit-tests-mock -currentpage-in-slinghttpservletrequest 미리 결과를 공유해 주셔서 감사합니다. –