【问题标题】:Test States Language Specification in a Step Function's state machine在 Step Function 的状态机中测试状态语言规范
【发布时间】:2020-07-26 20:06:26
【问题描述】:

我们有一个 Step Function 状态机,它具有以 json 格式编写的状态语言规范,它在工作流执行期间根据输入和条件调用多个 Lambda 函数。

有没有办法通过模拟 Lambda 依赖项来对这个 json 代码(工作流程)进行单元/集成测试?例如。测试特定 Lambda 的输出何时为 XXX,然后 YYY 步骤被步骤函数工作流调用。

我检查了"Develop and Test AWS Step Functions Workflows Locally" 文档,但它似乎提供了一种在本地步进函数中测试 Lambda 的方法。我想要的是模拟 Lambda 并测试 json(工作流/状态语言)。

【问题讨论】:

    标签: aws-step-functions serverless-framework-step-functions


    【解决方案1】:

    我们有一个开发人员想在本地运行 lambda 函数并在这个庄园中进行测试。老实说,我认为这没什么用,也没有增加任何价值,原因是除了你自己对状态语言规范的理解之外,你没有测试任何东西。

    假设您为某个抛出异常的作业编写测试:

        "Try": {
          "Next": "Job Succeeded",
          "Type": "Parallel",
          "Branches": [{
            "StartAt": "TODO",
            "States": {
            "TODO": {
              "Comment": "This throws an exception.",
              "Type": "Task",
              Resource": "arn:aws:states:::states:startExecution.waitForTaskToken",
              "Parameters": {
                "Input": {
                  "something.$": "$$.Execution.Input.something"
                }
              },
              "End": true
            }
            }
          "Catch": [{
            "ErrorEquals": ["States.ALL"],
            "Next": "Job Failed"
          }]
        }
    

    TODO 失败时测试它会转到Job Failed 并且当它成功时它会转到Job Succeeded。好吧,这肯定会发生,没有必要对此进行测试,除非您自己为 AWS 工作。

    唯一真正值得做的测试是集成测试和性能测试。您可以模拟服务关闭、数据库关闭等启动步进功能,并获得结果。即使那样,如果您知道您的任务将返回到功能集成测试中,也不会给您太多。

    我的建议是将您的测试工作重点放在对步进函数的性能测试上,这将显示您的系统是否开始出现问题,步进函数是否开始超时等。但是对步进函数进行单元测试不会说明你不知道的任何东西。这就是阶梯函数的重点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2022-09-23
      • 2022-11-03
      • 2022-10-13
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多