0

我正在使用 frisby 来自动化 REST API 测试。我所有的 REST API 都是基于 json 并返回 json 响应。在其中一项要求中,我需要读取响应标头并获取响应标头并将其设置为下一个请求。使用 json 响应,我无法读取响应标头。以下是我的测试的示例代码。

frisby.create("Check to make sure that user does exist")
                                            .get(hostURL + "/api/users/checkusername/" + username, user, {json: true}, {headers: {'Content-Type': 'application/json'}})
                                            .expectHeaderContains('content-type', 'application/json')
                                            .afterJSON(function (response) {
                                            //How to read session id from header
                                                //var sessionId = res.headers[constants.SESSION_ID_HEADER_KEY]; 
                                                var exist = response.exist;
                                                expect(exist).toBe(true);

                                                });

请帮忙。

4

1 回答 1

1

您的代码实际上没问题,您只是尝试使用“res”变量而不是响应。

frisby.create("Check to make sure that user does exist")
.get(hostURL + "/api/users/checkusername/" + username, user, {json: true}, {headers: {'Content-Type': 'application/json'}})
.expectHeaderContains('content-type', 'application/json')
.afterJSON(function (response) {
  var sessionId = response.headers[constants.SESSION_ID_HEADER_KEY]; 
  // Use the sessionId in other frisby.create(...) call
}).
toss();

另一种选择是使用 after() 如下:

frisby.create("Check to make sure that user does exist")
.get(hostURL + "/api/users/checkusername/" + username, user, {json: true}, {headers: {'Content-Type': 'application/json'}})
.expectHeaderContains('content-type', 'application/json')
.after(function (err, res, body) {
  var obj = JSON.parse(body);
  var sessionId = obj.headers[constants.SESSION_ID_HEADER_KEY]; 
  // Use the sessionId in other frisby.create(...) call
}).
toss();
于 2015-07-09T02:19:41.897 回答