假设我们有以下体系结构:

桶A在创建新文件时触发一个事件到队列。Lambda使用此事件,决定是否向 Queue B生成一条新消息。如果Lambda确实为队列B生成了一条消息,那么Lambda将使用该消息并将其转储到一个新的桶B。
对Lambda进行集成测试的正确或推荐的方法是什么?
当另一个Lambda可用时,lambda生成的消息将被另一个Lambda使用,这使得无法在消息离开之前检查Lambda是否生成了一条消息到队列B?如何在集成测试中处理这个问题?
发布于 2022-05-28 12:35:28
由Lambda生成的消息在可用时将被另一个lambda使用,这使得无法检查Lambda是否在消息离开之前生成了一条消息到队列B?
这个体系结构实际上是非常容易测试的,但是首先您需要回答“为什么要孤立地测试Lambda?”集成测试应该可以说是对整个流程进行端到端的测试,并验证特定的输入(上传到桶A的文件)是否会产生预期的输出(一个文件位于桶B中)。您应该进行单元测试,以充分执行Lambdas A和B中的逻辑。
但是,假设您确实想测试Lambda A的输出,您只需要为它提供一个队列,该队列将转到您的测试框架,而不是Lambda B。如果您确实想进行端到端的测试,那么您的测试框架就可以接收消息,并将其放到一个队列中,该队列将转到Lambda B:
Queue_A -> Lambda_A -> Test_Queue -> Test Framework -> Queue_B -> Lambda_B如果您编写Lambdas,使其从环境变量(而不是硬编码)获得队列URL,那么这就容易得多:引入测试框架就变成了更新配置而不是代码的简单问题。
我强烈建议您为集成测试创建一个专门的AWS帐户,以避免意外地破坏生产代码。
https://stackoverflow.com/questions/72412250
复制相似问题