[英]Jasmine JavaScript test - wait for a function test to finish
我正在嘗試Jasmine來自動化我的JavaScript測試。 我只是找不到有關一件事的信息(這是我想做的步驟):
登錄到服務。 (返回成功或失敗)
建立與服務器的連接。 (返回成功或失敗)
進行測試SIP呼叫。 (返回成功或失敗)
根據成功/失敗,我的規格(方案)失敗或通過。
測試這三件事的問題是:每件事都要花時間,尤其是數字3。到目前為止,我已經嘗試過茉莉花,並且無法弄清楚如何進行這樣的順序測試,因此每個步驟(測試)都必須完成下一個開始。 也許有一個更好的框架可以做到這一點? 我只測試JavasScript,不測試界面(按鈕,文本字段等)。
這是我的基本情況:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Jasmine Spec Runner v2.5.2</title> <!-- voxImplant stuff--> <script type="text/javascript" src="http://cdn.voximplant.com/voximplant.min.js"></script> <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.5.2/jasmine_favicon.png"> <link rel="stylesheet" href="lib/jasmine-2.5.2/jasmine.css"> <script src="lib/jasmine-2.5.2/jasmine.js"></script> <script src="lib/jasmine-2.5.2/jasmine-html.js"></script> <script src="lib/jasmine-2.5.2/boot.js"></script> <!-- include source files here... --> <script src="src/voximp_src.js"></script> <!-- include spec files here... --> <script src="spec/voximp_spec.js"></script> </head> <body> </body> </html>
// Make a test call to play MP3 describe("[VoxEngine Basic Call Test]", function () { it('does something', function (done) { VoxEngine.Login_to_a_service() .then(VoxEngine.Establish_a_connection) .then(VoxEngine.Make_a_test_call) .then(function () { expect(1).toEqual("SUCCESS"); done(); }) .catch(fail) }); });
window.VoxEngine = { Login_to_a_service: function () { // Sleep var now = new Date().getTime(); while (new Date().getTime() < now + 2000) { console.log("Login processing"); } console.log("Login done"); return "SUCCESS"; }, Establish_a_connection: function () { // Sleep var now = new Date().getTime(); while (new Date().getTime() < now + 2000) { console.log("Connection processing"); } console.log("Connection done"); return "SUCCESS"; }, Make_a_test_call: function () { // Sleep var now = new Date().getTime(); while (new Date().getTime() < now + 2000) { console.log("Call processing"); } console.log("call failed"); return "FAIL"; } }
因此,基本上,我需要確保它們一個接一個運行,並且下一個在完成前一個運行之后運行。 假設,“測試電話”已完成,然后測試“到服務器的關閉連接”是否成功。
基本上,您在測試用例中獲取了done
參數,並在異步任務完成時調用它:
it('does something', function(done) {
Login_to_a_service()
.then(Establish_a_connection)
.then(Make_a_test_call)
.then(function() {
expect(1).toBe(1); // or something that makes more sense...
done();
})
.catch(fail)
});
文件: https : //jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.