我正试图在一个茉莉花测试套件中进行两次异步调用。 第二个呼叫应该等到第一个呼叫完成然后拨打电话。 如此简单的设置:
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块的用法。这是一个接一个地测试几个异步调用的正确方法吗?
答案 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将等待应该来自各自的运行块或超时的条件。