2016-06-15 6 views
0

私は1つのジャスミンテストスイートで2つの非同期呼び出しをしようとしています。 2番目のコールは、最初のコールが終了してからコールするまで待機する必要があります。 だから、簡単なセットアップ:ジャスミン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'); 
 
    }); 
 

 
});

は、それが上記の何かをすることは可能ですか?私はいくつかのwaitsFor/runsブロックが一緒に使用される使用法を見つけることができませんでした。次々にいくつかの非同期呼び出しをテストするのが正しい方法ですか?

答えて

0

私たちのセットアップを試した後、私は実際には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は、それぞれの実行ブロックまたはタイムアウトから来るべき条件を待ちます。

関連する問題