Junit 使用WCM IO模拟AEM资产管理器
我正在创建一个sling模型,该模型从文件中获取一个excel文件,以读取和显示AEM组件中的数据Junit 使用WCM IO模拟AEM资产管理器,junit,aem,Junit,Aem,我正在创建一个sling模型,该模型从文件中获取一个excel文件,以读取和显示AEM组件中的数据 @Model( adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL ) public class OnlineCoursesModel { @Self private SlingHttpServletReq
@Model(
adaptables = SlingHttpServletRequest.class,
defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL
)
public class OnlineCoursesModel {
@Self
private SlingHttpServletRequest request;
@ValueMapValue
private String filePath;
private List<OnlineCourseDTO> onlineCourses;
@PostConstruct
public void init() {
AssetManager assetManager = request.getResourceResolver().adaptTo(AssetManager.class);
Asset asset = assetManager.getAsset(filePath);
/** Do Something With the Asset **/
}
}
你的测试有点太复杂了。你能试试这个简单的版本吗
@Test
public void checkIfFileIsRead() {
context.create().asset("/content/dam/image.jpg", 1, 1, StandardImageHandler.JPEG_MIMETYPE);
undertest = context.request().adaptTo(OnlineCoursesModel.class);
assertNotNull(undertest);
}
这将在/content/dam/image.jpg
处创建一个新资产,其宽度为1
,高度为1
,mime类型为image/jpg
您不需要加载二进制和其他json
附加注释
您也不需要根据请求进行调整。这被认为是不好的做法,只有在您需要特定信息时才应该这样做,而这些信息只是请求的一部分。例如,有关发送请求的用户的信息
否则,请始终从Resource.class
进行调整
例如:
@Model(adaptables = Resource.class)
public class OnlineCoursesModel {
@OSGiService
private AssetManager assetManager;
@PostConstruct
public void init() {
Asset asset = assetManager.getAsset(filePath);
/** Do Something With the Asset **/
}
}
@Model(adaptables = Resource.class)
public class OnlineCoursesModel {
@OSGiService
private AssetManager assetManager;
@PostConstruct
public void init() {
Asset asset = assetManager.getAsset(filePath);
/** Do Something With the Asset **/
}
}