茉莉花1.3

时间:2016-06-15 11:32:26

标签: javascript angularjs asynchronous 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块的用法。这是一个接一个地测试几个异步调用的正确方法吗?

1 个答案:

答案 0 :(得分:0)

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

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将等待应该来自各自的运行块或超时的条件。