我正在使用空手道 1.4.0 我有一些空手道场景来测试我的应用程序,并且我使用空手道 MockServer 作为模拟下游服务。
为了模拟边缘情况场景(例如下游的空结果),我想根据运行的空手道场景选择特定的模拟文件。有没有办法知道触发下游模拟调用的场景是什么?
// myScenarios.feature
Scenario: scenario 123
...
// myDownstreamMock.feature
Scenario: pathMatches('/downstream/path/api/v0')
...
def responseStatus = 200
string mockFileName = "<NAME_BASED_ON_MY_SCENARIO>.json"
def response = read (mockFileName)
目前我发现的唯一解决方法是将这些信息传递到我知道会传播到下游的一些字段(例如自定义标头),以便我可以在模拟功能中检索该字段并选择正确的模拟文件。
例如:
// myScenarios.feature
Scenario: scenario 123
...
And headers {'test-id': 'scenario123'}
When method post
...
// myDownstreamMock.feature
Scenario: pathMatches('/downstream/path/api/v0')
...
string mockFileName = requestHeaders['test-id'] + ".json"
def response = read (mockFileName)
这不能适用于所有下游,所以我需要找到更好的方法。
您可以查看 API
karate.scenario
是否能满足您的需求。它将返回有关当前正在执行的 Scenario
的元数据 JSON。我真的不记得它是否适用于模拟。如果没有,可能需要贡献一些代码。