2016-06-15 4 views
0

Я пытаюсь сделать два асинхронных вызова в одном наборе тестов жасмина. Второй вызов должен дождаться завершения первого, а затем сделать вызов. Так простая установка:Несколько асинхронных вызовов в jasmine 1.3

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'); 
 
    }); 
 

 
});

Можно ли сделать что-то выше? Я не мог найти использование, когда несколько блоков ожидания/запуска используются вместе. Это правильный способ проверить несколько асинхронных вызовов один за другим?

ответ

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 будет ждать условия, которые должны исходить от соответствующих блоков запустить или тайм-аут.

Смежные вопросы