1

我是使用 TAPE JS 进行测试的新手。我已经完成了所有设置和工作,并且在常规测试中运行良好。但我正在尝试测试一个独特的基于 REST API 的产品,该产品依赖于在下一次调用获得成功调用所需的信息之前进行的某些调用。

所以这是我试图开始工作的前两个电话:

var SessionId;

test('beginIqsSession', function (assert) {
    assert.plan(1);
    var requestData = {"ProductDataArray":{"Feid":"GIQNY","AltData":"SaneID:null","Debug":"false","PageId":"1.1"}};

    request({
    url: 'http://192.168.99.100/Iqs/api.php/beginIqsSession',
    method: "POST",
    json: requestData
    }, function(error, response, json){

        if(json.responseDataPayload.SessionId)
        {
            SessionId = json.responseDataPayload.SessionId;

            assert.equal(1,1);
        }
    });
    assert.end();
});


test('validateAddress', function (assert) {
    assert.plan(2);

    console.log("Retrieving validateAddress response");

    var requestData = {"SessionId":SessionId,"ValidateAddressDataArray":{"PropertyStreetNumber":"20671","PropertyStreetName":"mountain vista dr","PropertyCity":"anchorage","PropertyState":"AK","PropertyZipCode":"99577"}};

    console.log(SessionId);

    request({
        url: 'http://192.168.99.100/Iqs/api.php/validateAddress',
        method: "POST",
        json: requestData
    }, function (error, response, body) {

        if (!error) {
            console.log(body);
        }
        else {
            console.log("error: " + error)
        }
    });

    assert.end();
});

所以基本上在上面的代码中,我正在尝试测试 beginIqsSession,等待它的响应,并存储来自该响应的一段数据,以便将来的调用需要发送。

在 validateAddress 中,您会看到我正在尝试传递上一次调用中返回的 SessionId,但由于此测试与上一次测试同时运行,因此此变量仍然为空。如何拨打第二个电话以及所有未来的电话以等待前一个电话运行?

assert.plan 显然不能以这种方式工作。

4

1 回答 1

1

你可以使用Promise API

var SessionId;

let p1 = new Promise((resolve, reject) => {
  test('beginIqsSession', function (assert) {
    assert.plan(1);
    var requestData = {"ProductDataArray":{"Feid":"GIQNY","AltData":"SaneID:null","Debug":"false","PageId":"1.1"}};

    request({
    url: 'http://192.168.99.100/Iqs/api.php/beginIqsSession',
    method: "POST",
    json: requestData
    }, function(error, response, json){

        if(json.responseDataPayload.SessionId)
        {
            SessionId = json.responseDataPayload.SessionId;

            assert.equal(1,1);
          resolve(SessionId);
        }
    });
    assert.end();
  });
})

p1.then((SessionId) => {
  test('validateAddress', function (assert) {
    assert.plan(2);

    console.log("Retrieving validateAddress response");

    var requestData = {"SessionId":SessionId,"ValidateAddressDataArray":{"PropertyStreetNumber":"20671","PropertyStreetName":"mountain vista dr","PropertyCity":"anchorage","PropertyState":"AK","PropertyZipCode":"99577"}};

    console.log(SessionId);

    request({
        url: 'http://192.168.99.100/Iqs/api.php/validateAddress',
        method: "POST",
        json: requestData
    }, function (error, response, body) {

        if (!error) {
            console.log(body);
        }
        else {
            console.log("error: " + error)
        }
    });

    assert.end();
  });
  
});

于 2016-09-26T19:36:42.170 回答