如何正确传递karate.scenario.failed至其他Karate场景?
问题解决方法
你遇到的问题核心是参数表达式的求值时机不对:当你在karate.call的参数中直接写karate.scenario.failed时,这个表达式是在被调用的updateJama.feature场景上下文里才会被计算,此时karate.scenario指向的是被调用的那个场景,而非触发afterScenario的原执行场景,导致拿到的状态不符合预期。
正确的实现方式是先在原场景上下文里捕获失败状态,再传给被调用的feature:
configure afterScenario = """ // 先在原场景上下文中获取失败状态并保存到变量 var currentFailed = karate.scenario.failed; // 再将变量传入被调用的feature karate.call(helperFolder + 'jama/updateJama.feature', {id: jamaId, failed: currentFailed}); """
这样currentFailed会在afterScenario触发时(原场景执行完毕的上下文)立即求值,拿到的是原场景的真实失败状态,再传递给updateJama.feature就可以正确更新结果了。
内容的提问来源于stack exchange,提问作者user14146382
相关产品推荐
相关产品推荐

