2012-10-10 43 views
0

我正在使用API​​-easy,如何在_id_user中獲得此結果並將調用發送給.post()謝謝。例如調用.post()API-Easy

var APIeasy = require('api-easy'), 
    assert = require('assert'); 

var _id_user; 

var suite = APIeasy.describe('Test User'); 
suite.use('localhost', 3000) 
    .discuss('Test') 
    .setHeader('Content-Type', 'application/x-www-form-urlencoded') 
     .post('/user/authenticate', {data: '{"email":"[email protected]","password":"123456"}') 
     .expect('should respond with ID user', function (err, res, body) { 
      _id_user = body; // I need this result to be sent in the next call .post() 
     }).next() 
     .post('/user/validate',{ data : _id_user}) // this result always comes null 
     .expect('should respond TRUE', function (_err, _res, _body) { 
}).export(module); 

回答

-2

這是因爲回調函數的異步性質。在回調函數中執行第二個帖子,即_id_user=body;

2

處理此問題的正確方法是使用before()調用來修改您的帖子參數。您可以直接修改「傳出」請求的內容。

var APIeasy = require('api-easy'), 
    assert = require('assert'); 

var suite = APIeasy.describe('Test User'); 
suite.use('localhost', 3000) 
    .discuss('Test') 
    .setHeader('Content-Type', 'application/x-www-form-urlencoded') 
     .post('/user/authenticate', {data: '{"email":"[email protected]","password":"123456"}') 
     .expect('should respond with ID user', function (err, res, body) { 
      suite.before('setUserId', function(outgoing) { 
       //use outgoing.body for post requests and outgoing.uri for get requests 
       outgoing.body = outgoing.body.replace('_ID_USER',body); 
       return outgoing; 
      });  

     }).next() 
     .post('/user/validate',{ data : '_ID_USER'}) 
     .expect('should respond TRUE', function (_err, _res, _body) { 
      //you can unbefore() here if you need it 
      suite.unbefore('setUserId'); 
}).export(module);