2016-10-05 49 views
0

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

因此,要澄清,我想写这^测试的另一部分与

.after(function(err, res, body){} 

步骤:

  1. 我创建了一个消息草案
  2. 我想我的测试自动获得刚创建的草稿ID
  3. 所以我可以删除它\发送它

谢谢!

+0

在这里,我找到了一些可能的解决方案。我只是不知道它是如何工作的:(帮助我,请 – Viterzgir

+0

var frisby = require('frisby'); frisby.create('Create Draft Google') \t .post('https:// www .googleapis.com/Gmail的/ V1 /用户/ ME /草稿的access_token = []”,{ \t消息:{ \t \t \t原料: “RGFu ...”, \t \t} \t \t},{ JSON:真}) \t \t .inspectJSON() \t \t .inspectBody() \t .expectSta tus(200) \t.JSON后(函数(err,res,body){varrj}}。解析(机构); \t \t var Id = obj.headers [constants.ID_HEADER_KEY]; \t \t frisby.create( '删除谷歌测试草案') \t \t \t .delete( 'https://www.googleapis.com/gmail/v1/users/me/drafts/' + Id.ID_HEADER_KEY +'?的access_token = []”,{}) \t \t \t .expectStatus(204)\t \t \t .toss(); \t \t}) .toss();' – Viterzgir

+0

对不起,格式化丢失。我只是认为我错误地使用了变量。问题是没有适当的文档 – Viterzgir

回答

0
.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(); 
}) 
1

当你创建一个草稿,你会得到响应新创建的草案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到senddelete信息。

+0

谢谢!但我知道:) frisby.js是否有可能自行获取这些信息?当它得到响应它可以自动获得ID,例如?或者只能手动操作? – Viterzgir

相关问题