在步骤函数的状态机中测试状态语言规范



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

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

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

我们有一个开发人员想要在本地运行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 工作,否则无需对此进行测试。

唯一值得做的真正测试是集成测试和性能测试。您可以模拟服务关闭,数据库关闭等启动阶跃函数,并获得结果。即便如此,如果你知道你的任务会返回到函数集成测试中,也不会给你太多。

我的建议是将您的测试工作集中在性能测试步骤函数上,这将显示您是否开始在系统中出现问题,如果步骤函数开始超时等。但是单元测试阶跃函数不会告诉你任何你还不知道的事情。这就是阶跃函数的全部意义所在。

最新更新