저는 프로젝트를위한 슬링 모델로 몇 가지 작업을 해왔고 그 과정에서 두 개의 커스텀 인젝터를 만들었습니다. 구현 될 때 모든 것이 훌륭하게 작동합니다 (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"어노테이션을 어딘가에 등록 할 필요가 있는지 또는 누군가가 커스텀 인젝터를 어떻게 실행할 수 있는지에 대한 일반적인 정보가 있는지 궁금합니다.
고맙습니다.
안녕하세요. Brodie, 맞춤 분사기 테스트와 비슷한 문제가 발생했습니다. 커스텀 인젝터가 나에 의해 구현되지 않았기 때문에 나의 케이스가 당신과 꽤 다르지 만, ACS AEM Commons의 @AemObject. 의견을 작성하는 것이 흥미로울 것입니다. 여기에 공유 된 코드의 문제점을 이해하는 데 도움이 될 수 있습니다. https://stackoverflow.com/questions/46993268/sling-model-unit-tests-mock -currentpage-in-slinghttpservletrequest 미리 결과를 공유해 주셔서 감사합니다. –