API 自动化 - 是否可以获得 post 调用的响应

API Automation - Is it possible to get response of the post call

我正在学习如何在 gmail.api 上使用 frisby.js 自动化 API。 我想创建一个测试,在其中创建和删除(或发送)草稿消息。

所以我编写了一个创建草稿的测试,我的问题是 - 我可以编写一个代码,至少从我的 Post 调用中获取生成的响应的 ID 吗?

    var frisby = require('frisby');
frisby.create('Create Draft Google')
    .post('https://www.googleapis.com/gmail/v1/users/me/drafts?access_token=*my-token-here*', {
        message: {
            raw: "RGFuJ3MgVG9vbHMgYXJlIGNvb2wh",
            id: "1547265285486966899"
        }
        }, { json: true })
        .inspectJSON()
        .inspectBody()
    .expectStatus(200)
.toss();

所以,为了澄清,我想用

编写 THIS^ 测试的另一部分
.after(function(err, res, body){}

步骤:

  1. 我创建消息草稿
  2. 我希望我的测试自动获取刚刚创建的草稿的 ID
  3. 所以我可以删除 it\Send 它

谢谢!

创建草稿时,您将在响应中获取新创建草稿的id:

请求

POST https://www.googleapis.com/gmail/v1/users/me/drafts?access_token={access_token}

{
 "message": {
  "raw": "RnJ..."
 }
}

回应

{
 "id": "r5019331921817638435",
 "message": {
  "id": "157948187e41b5bb",
  "threadId": "157948187e41b5bb",
  "labelIds": [
   "DRAFT"
  ]
 }
}

然后您可以使用此 ID 来 send or delete 消息。

.afterJSON(function(json){
    callback(json.id);
})

我使用了这个功能并且它起作用了。感谢我朋友的帮助 :D

如果有人需要,这里有完整的测试: 这就是我如何获得已创建草稿的 ID

var frisby = require('frisby');
var new_id = function(frisby, callback)
{
frisby.create('Create Draft Google')
    .post('https://www.googleapis.com/gmail/v1/users/me/drafts?access_token=[my_token]', {
        message: {
            raw: "RGFu...",
        }
        }, { json: true })
        .inspectJSON()
        .inspectBody()
    .expectStatus(200)
    .afterJSON(function(json){
        callback(json.id);
    })
    .toss();
};
module.exports = new_id;

我就是这样删除这个草稿的

var frisby = require('frisby');
var getid_spec = require("./getid_spec.js");
getid_spec(frisby,function(id){
frisby.create('Delete Google Draft Test')
        .delete("https://www.googleapis.com/gmail/v1/users/me/drafts/" +id +"?access_token=[my_token]", {})
        .expectStatus(204)  
    .toss();
})