2016-12-20 95 views
0

我正在尝试茉莉花来自动化我的JavaScript测试。我只是找不到有关一件事的信息(这里是我想要做的步骤):茉莉花JavaScript测试 - 等待功能测试完成

  1. 登录到服务。 (返回SUCCESS或FAILED)

  2. 建立到服务器的连接。 (返回SUCCESS或FAILED)

  3. 进行测试SIP呼叫。 (return SUCCESS or FAILED)

根据成功/失败,我的规范(场景)失败或通过。

在测试这3件事情时出现问题:每一步都需要时间,特别是数字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"; 
 
    } 
 
}

Result for this template

所以基本上,我需要确保他们跑了一个又一个和前一个完成后的下一个运行。比方说,Make-A-Test-Call已完成,然后测试Connection-To-The-Server-Closed是否成功。

回答

0

基本上,你获得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

+0

感谢。对不起,我对任何WebDev的东西都是100%新的。你能详细解释一下吗? –

+0

@YuriyL:当然,但我必须知道哪部分你不了解。 – georg

+0

对不起!我编辑了我的帖子。请看看我在那里。 –