JS磁带-等待前一个异步测试完成,以移动到下一个测试

JS Tape - Wait for previous async test to complete to move to next test

本文关键字:测试 下一个 移动 异步 一个 等待 磁带 JS      更新时间:2023-09-26

我是使用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,但是由于此测试与前一次测试同时运行,因此该变量仍然为空。我如何进行第二个呼叫,以及以后的所有呼叫,以等待前一个呼叫运行?

断言。Plan显然不是这样的

你可以使用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();
  });
  
});