在Frisby中访问标题

时间:2014-08-13 23:11:34

标签: javascript cookies automated-tests

我正在使用Frisby.js库来测试一些API,我需要访问set-cookie标头中的会话cookie以发送以下请求。

当我尝试使用inspectJSON()方法时,我没有看到输出中包含的标头,而且我无法识别任何方式来访问响应中的标头。任何帮助非常感谢。谢谢!

2 个答案:

答案 0 :(得分:3)

此示例使用后续调用链接一个Login调用,该调用会添加" set-cookie"到下一个电话。 cookie将作为Web浏览器进行维护,第二次调用仅适用于传递给第二次调用的set-cookie。

var cookie = "";
frisby.create('Login')
.post('localhost:8080/login', {
    "username": "test_user_01",
    "password": "abcd1234",
}, {
    json: true
})
.inspectJSON()      // Prints response json to stdout
 .inspectHeaders()  // Prints out all the headers in response
.expectStatus(200)  // Check for http success
.expectJSONTypes({  // Check for any reported errors
    status: 1,
    message: 'success'
})
.after(function(body,res) {
    cookie = res.headers['set-cookie'];

    // Fetch account
    frisby.create('Get Accounts')
        .get(utils.URL + '/accounts?includeAllAccounts=1', {
                    headers:  {
                        "Content-Type": "application/json",
                        "Accept": "application/json",
                        "Cookie": cookie,
                    }
                })
        .inspectJSON()
        .expectStatus(200)
        .expectJSONTypes('responseMap.accounts.0', {
            //These tests will fail if the value is null
            accountNumber: String,
        })
        .toss();
}).toss();

答案 1 :(得分:1)

好的,发布此问题后约2分钟,我找到了答案。我能够访问.after()函数中的标题,如下所示:

.after(function(body,res) {
    //output headers to console
    console.log('************* Headers: ' + JSON.stringify(res.headers, null, 4));
})