0

私はAPIを使用しています-簡単です。この結果を_id_userで取得し、.post()に呼び出しを送信するにはどうすればよいですか。例えば

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":"emailuser@email.com","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);
4

2 に答える 2

2

これに対処する正しい方法は、before()呼び出しを使用してpostパラメーターを変更することです。'送信'リクエストの内容を直接変更できます。

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":"emailuser@email.com","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);
于 2013-07-19T09:15:51.777 に答える
-2

これは、コールバック関数の非同期性によるものです。コールバック関数内で2番目の投稿を実行します。_id_user=body;

于 2012-10-11T01:19:28.323 に答える