簡體   English   中英

Jasmine JavaScript測試-等待功能測試完成

[英]Jasmine JavaScript test - wait for a function test to finish

我正在嘗試Jasmine來自動化我的JavaScript測試。 我只是找不到有關一件事的信息(這是我想做的步驟):

  1. 登錄到服務。 (返回成功或失敗)

  2. 建立與服務器的連接。 (返回成功或失敗)

  3. 進行測試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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM