我们有一个开发人员想在本地运行 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 工作。
唯一值得做的真正测试是集成测试和性能测试。您可以模拟服务关闭、数据库关闭等启动步进功能,并获得结果。即使那样,如果您知道您的任务将返回到功能集成测试中,也不会给您太多。
我的建议是将您的测试工作重点放在对步进函数的性能测试上,这将显示您的系统是否开始出现问题,步进函数是否开始超时等。但是对步进函数进行单元测试不会告诉您任何事情还不知道。这就是阶梯函数的重点。