如何确保在frisby.js中的post方法上传递标头cookie

时间:2015-01-16 00:26:08

标签: javascript cookies http-headers session-cookies

我通过frisby.js在我的api上运行测试。当我登录用户时,我正在设置来自响应的标头cookie,如此

.after(function(err, res, body){
  header: { content-type: 'application/json',
            Cookie: res.headers['set-cookie']
          ...}

然后在我接下来的测试中写下

frisby.create('test with cookie')
  .get('http://myapi/',{ headers: header})

这样可行,但是当我发布帖子请求时

frisby.create('测试更新电子邮件')       .post(' http://myapi/user/update',{          电子邮件:' newEmail@test.com',          标题:标题        })

我从服务器看我的控制台,标题是

{ 'content-type': 'application/x-www-form-urlencoded',
    'host': config.baseDomain,
    'content-length': '269',
    'connection': 'keep-alive'
}

我想也许frisby检查应用的标头是否是正确的类型,并更新没有Cookie的标头,所以我创建了一个单独的postHeader

var postHeader = { 'content-type': 'application/x-www-form-urlencoded',
    'host': config.baseDomain,
    'content-length': '269',
    'connection': 'keep-alive'
};

并将Cookie附加到帖子标题并通过它发送,但这也不起作用。 我可以用任何方式获得在帖子标题中发送的cookie吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过添加:

.addHeader('Content-Type', 'application/json')

如下所示:

frisby.create('test update email') .addHeader('Content-Type', 'application/json') .post('http://myapi/user/update', { email: 'newEmail@test.com'}, {json: true}) .expectStatus(200) .toss();