有没有一种方法可以在本地和/或CI/CD中测试AppSync代码?

19

我希望能够涉足使用AppSync的项目。目前我已经能够找到许多在线文章,介绍如何点击按钮以获取运行示例项目的所有步骤,但是它们似乎都没有涉及如何在本地开发或CI / CD环境中处理它。这可能是我对开发通常的“老派”想法,但我期望有一种方法可以模拟足够的本地环境进行开发和运行单元测试,但我似乎找不到任何方式来实现这一点。当我到达UI部分时,我不知道如何拥有后端的本地开发实例来运行。

人们现在不再采用这种方式进行开发了吗?而是选择建立“开发堆栈”?我只是想确保我将来不会陷入进退两难的局面。


1
@LisaMShon 我不确定那是否是我正在寻找的东西。基本上我想问的是:当似乎所有东西都托管在远程服务器上时,如何开发/测试所述后端代码?我习惯于旧方法:本地编写和测试,检入,然后通过测试/QA/生产环境进行部署。这似乎意味着你需要针对实时开发后端开发你的前端? - CodeChimp
1
@LisaMShon 我认为我最终会这样做。我只是好奇是否有更好的方法可以做到这一点,而不涉及建立单独的远程环境。我也在看 Local Stack,但它不支持 AppSync。我想另一个选择就是使用简单的 Apollo/Express 服务器在本地托管它,但那样你就失去了所有附加的部分,比如身份验证/授权。 - CodeChimp
也许你甚至可以使用 AWS CodePipeline 实现 CI/CD。 - Lisa M Shon
1
如果您将serverless框架与serverless-appsync和serverless-appsync-offline结合使用,您可以在CI中模拟“离线”环境。虽然我还没有测试过。 - sebastian
1
我在实践中发现,几乎所有与AppSync相关的测试都围绕着VTL模板展开。最近,我发现了一种在Jest中进行单元测试的简便方法,请参阅我的其他stackoverflow答案获取一个实际示例。 - DaKaZ
显示剩余6条评论
3个回答

3
短答案是否定的。以下是你的选项:
  • Serverless Framework 的 AppSync 模拟器。这是一个不错的模拟器,但在我看来仍然存在一些限制,并且与真正的 API 有很大的区别。
  • 我们最终编写了单独的 VTL 模板单元测试,并将查询结果与相应的固件进行比较。你可以在 Java 上部署全功能的 VTL 解析器,但也有更简单的解决方案:Python 库 AirSpeed;对于 JS,你可以使用 AppSync 模拟器中的库。

0
尽管这篇帖子已经五年了,但我认为它值得与那些寻找现代化方法的人分享2023年的AppSync本地开发解决方案:

-2

这是一种直接在AWS控制台上测试您的Appsync解析器的方法。 在AppSync控制台的“模式”选项卡中,选择一个解析器,您将进入“编辑解析器”页面。 选择“选择测试上下文”按钮以模拟解析器接收到的上下文。 然后选择“运行测试”。


2
我更感兴趣的是如何从CI/CD的角度进行测试,即在集成/部署服务器在将更改推送到环境之前运行一系列测试。 - CodeChimp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接