为了为我的AppSync解析器编写单元测试,我使用VelocityJS包来解析我的sam模板中的虚拟磁带库。但是,VTL模板没有被完全解析。
代码在AWS上运行良好,是单元测试出错了。https://github.com/shepherdwind/velocity.js
#if($util.isNullOrBlank($ctx.result.themePreferences))
#set($themePreverences = {})
$util.qr($themePreverences.put("darkMode", "DEFAULT"))
$util.qr($ctx.result.put("themePreferences", $themePreverences))
#end
$util.toJson($ctx.result)使用let result = Velocity.parse(template, ctx);时,结果是字符串"$util.toJson($ctx.result)",而不是$ctx.result的JSON值。
即:
{ "themePreferences": { "darkMode": "DEFAULT" } }发布于 2019-08-27 06:57:21
我认为解析麻烦的原因是util和ctx/context都是AppSync概念,而不是VTL概念。因为你使用的是第三方库,他们不知道这是什么意思,也不能取代他们。
您可能会发现Amplify的新模拟和测试工具很有帮助:https://aws-amplify.github.io/docs/cli-toolchain/quickstart?sdk=js#mocking-and-testing
如果以上内容不适合您的用例,也有其他第三方库可以很好地涵盖AppSync本地开发,值得一试。
https://stackoverflow.com/questions/57465843
复制相似问题