我尝试在AEM中使用JUnit测试来测试一些DAM资产。
首先,我将现有资产复制为资源文件中的JSON。 接下来,我使用ContentLoader将JSON文件写入模拟存储库。
final ContentLoader contentLoader = new ContentLoader(this.getResourceResolver());
contentLoader.json("content/assets/testAsset.json", "/content/assets/testAsset");
然后,我使用ResourceResolver来解析destinationPath中的资源。
Resource assetRecource = resourceResolver.resolve("/content/assets/testAsset");
到目前为止一切顺利。 当我尝试将assetRecource调整为Asset.class时,结果为null。
Asset asset = assetRecource.adaptTo(Asset.class); // is null
在我看来,这是因为失踪的演绎。
有人知道如何解决这个问题吗? 也许使用ContentLoader#binaryResource()?
答案 0 :(得分:1)
检查资源的resourceType是 dam:Asset 。
Resource assetRecource = resourceResolver.resolve("/content/assets/testAsset");
DamUtil.isAsset(assetRecource); // This would be true if the asset is dam:Asset
assetRecource.getResourceType(); // This would return the resourceType of the resource.
applyTo为null的可能原因仅在资源不适用于Asset Class时。
参考:
答案 1 :(得分:0)
您需要添加以下依赖项来测试DAM声明:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-imaging -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-imaging</artifactId>
<version>1.0-R1534292</version>
</dependency>