我正在开发一个应用程序接口,使用apiary.io和Swagger。我想使用dredd测试API,对于正常的API响应(HTTP状态代码200)来说,这是很好的。但是,当API根据参数(例如403)返回不同的状态码时,dredd会报告测试失败。我想用一条可选的日志记录消息将测试标记为成功。
我试过了:
hooks.afterEach(function(transaction){
if (transaction.real){
switch (transaction.real.statusCode){
case "400":
case "403":
case "406":
transaction.fail=false;
hooks.log('Failed, but expected by the API');
}
}
});但是,这不起作用,测试仍然被标记为失败。我遗漏了什么?
发布于 2019-10-25 21:17:30
您的接口描述文档是OAS3格式的吗?您可能正在经历this issue。Dredd应该在OAS2的情况下自动将非2xx的情况标记为跳过,但它还没有为OAS3这样做,对该格式的支持仍处于实验阶段。
一种解决方法是在之前的钩子中将事务设置为跳过自己:
hooks.beforeEach(function(transaction){
if (transaction.real){
switch (transaction.real.statusCode){
case "400":
case "403":
case "406":
transaction.skip = true;
}
}
});https://stackoverflow.com/questions/58558840
复制相似问题