【问题标题】:Several async calls in jasmine 1.3jasmine 1.3 中的几个异步调用
【发布时间】:2016-06-15 11:32:26
【问题描述】:

我正在尝试在一个 jasmine 测试套件中进行两个异步调用。 第二个电话应该等到第一个电话完成后再拨打电话。 如此简单的设置:

it('async tests', function(){ 

runs(function() {
      flagToServer = false;
      flagFromServer = false;
      value1 = 0;
      value2 = 0; 
      dataToGet = "";
      dataToSend = "";

      setTimeout(function() {
        flagFromServer = true;
        data = getDataFromServer();
      }, 500);
    });
    waitsFor(function() {
      value1++;
      return flag;
    }, "The Value should be incremented", 750);

    runs(function() {
      expect(value1).toBeGreaterThan(0);
      expect(data).toBe(expectedData);
    });

    //second async call to server;
    runs(function() {
      dataToSend = manipulate(dataToGet);
      
      setTimeout(function() {
        sendDataToServer(dataToSend);
        flagToServer = true;
      }, 500);
    });
  
     waitsFor(function() {
       value2++;
       return flagToServer;
       
     });
  
     runs(function() {
       expect(value2).toBeGreaterThan(0);
       expect(eventFromServer).toBe('got data');
     });

});

上面可以做点什么吗?我找不到一起使用多个 waitsFor/runs 块的用法。一个接一个地测试多个异步调用是否正确?

【问题讨论】:

    标签: javascript angularjs asynchronous jasmine


    【解决方案1】:

    所以在尝试了我们的设置之后,我发现确实可以在一套西装中使用多次运行和等待。它们将按照定义的顺序执行。

    run(function() {
    

    runs(function() {
      async();
    })
    waitsFor(function() {
      return data;
    }, "Data should have come", 2000);
    
    runs(function() {
      expect(data).not.toBeEmpty();
      async(data);
    })
    
    waitsFor(function() {
      return manipulatedData;
    });
    
    runs(function() {
      expect(manipulatedData).not.toBeEmpty();
    });

    每个相应的 wiatsFor 将等待应该来自其各自运行块或超时的条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 2020-11-09
      相关资源
      最近更新 更多