这很旧,但我刚刚遇到了同样的问题,并且 dredd 文档已经过时了(这不是很讽刺吗?!),所以既然我发现这可能会对某人有所帮助:)
您可以使用钩子读取和覆盖响应和请求正文和标头(这是我在该主题上找到的最新页面,但仍有问题和拼写错误)。需要注意的是,dredd 似乎没有 cookie 助手,因此您必须自己解析和构建 cookie 标头。
在我的情况下,sessionId
它以 json 正文和 cookie 的形式返回:我解析了正文,因为这更容易,但如果需要,您可以很好地从响应 cookie 中检索会话。以下是我为使身份验证工作而编写的大致钩子:
hooks = require('hooks');
stash = {}
// hook to retrieve session on a login
hooks.after('Auth > /remoteauth/userpass > POST', function(transaction){
stash['token'] = JSON.parse(transaction.real.body)['sessionId'];
});
// hook to set the session cookie in all following requests
hooks.beforeEach(function(transaction){
if(stash['token'] != undefined){
transaction.request['headers']['Cookie'] = "id=" + stash['token']
};
});
文档解释了如何设置挂钩,尽管让我感到困惑的一件事是,dredd --names
如果您在同一目录中有文件,该命令将不起作用dredd.yml
(似乎该文件的存在使 dredd 忽略所有命令行参数)。