2016-06-15 11 views
0

Ich versuche, zwei Async-Aufruf in einer Jasmin-Test-Suite zu machen. Der zweite Anruf sollte warten, bis der erste Anruf beendet ist, und dann einen Anruf tätigen. So einfaches Setup:Mehrere Async-Anrufe in Jasmin 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'); 
 
    }); 
 

 
});

Ist es möglich, über etwas zu tun? Ich konnte keine Verwendung finden, wo mehrere waitFor/runs-Blöcke zusammen verwendet werden. Ist es der richtige Weg, mehrere Async-Aufrufe nacheinander zu testen?

Antwort

0

Also nach dem Experimentieren mit unserem Setup, habe ich verstanden, dass es tatsächlich möglich ist, mehrere Läufe zu verwenden und in einem Anzug zu warten. Sie werden ausgeführt, so wie sie definiert wurden.

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

Die jeweilige wiatsFor wird für Zustand warten, von ihren jeweiligen Laufblöcke oder Timeout kommen sollte.