【发布时间】:2022-11-19 08:09:01
【问题描述】:
在 AEM JAVA 中,我创建了一个从 Tag Manager 获取标签列表的函数。我能够获得所需的数据,并且可以从跟踪代码管理器中正确检索到代码。但是在单元测试中,下面这部分总是被排除在测试之外。我只包含了与问题相关的代码。
@SuppressWarnings("unchecked")
public Iterator<Resource> getTransform(Iterator<Tag> childTagItr, Locale locale, SlingHttpServletRequest request) {
return new TransformIterator(childTagItr, new Transformer() {
public Object transform(Object o) {
Tag tag = (Tag) o;
String tagId = tag.getTagID();
ValueMap vm = new ValueMapDecorator(new HashMap<String, Object>());
vm.put("value", tagId);
vm.put("text", tag.getTitlePath(locale));
return new ValueMapResource(request.getResourceResolver(), new ResourceMetadata(), "nt:unstructured", vm);
}
});
}
我尝试了以下测试:
@Test
void testGetDataTags() throws ServletException, IOException {
// Arrange
Mockito.when(request.getAttribute(Mockito.anyString())).thenReturn(slingBindings);
Mockito.when(slingBindings.getSling()).thenReturn(sling);
Mockito.when(request.getResourceResolver()).thenReturn(resolver);
Mockito.when(request.getResourceResolver().adaptTo(TagManager.class)).thenReturn(tagManager);
//Mockito.when(config.get(PATH)).thenReturn(PATH);
//Mockito.when(expressionHelper.getString(PATH)).thenReturn(PATH_VALUE);
Mockito.when(tagManager.resolve(Mockito.anyString())).thenReturn(parentTag);
getTags();
// Act
final Locale locale = request.getLocale();
CareerPageCategoryLevelTwo careerPageCategoryLevelTwo = new CareerPageCategoryLevelTwo();
Transformer tagResource = new Transformer() {
public Object transform(Object o) {
Tag tag = (Tag) o;
String tagId = tag.getTagID();
ValueMap vm = new ValueMapDecorator(new HashMap<String, Object>());
vm.put("value", tagId);
vm.put("text", tag.getTitlePath(locale));
return new ValueMapResource(request.getResourceResolver(), new ResourceMetadata(), "nt:unstructured", vm);
}
};
@SuppressWarnings("unchecked")
Iterator<Resource> iteratorResource= new TransformIterator(tagIterator, tagResource);
Mockito.when(careerPageCategoryLevelTwo.getTransform(tagIterator, locale, request)).thenReturn(iteratorResource);
// Assert
assertNotNull(iteratorResource);
}
被排除在外。 我的问题是如何将这部分包含在单元测试中?
【问题讨论】:
标签: java unit-testing tags aem