我正在尝试Jasmine来自动化我的JavaScript测试。我只是找不到关于一件事的信息(这是我想要做的步骤):
登录服务。 (返回SUCCESS或FAILED)
建立与服务器的连接。 (返回SUCCESS或FAILED)
进行测试SIP呼叫。 (返回SUCCESS或FAILED)
基于SUCCESS / FAILED,我的规范(场景)失败或通过。
测试这3件事的问题:每件事都需要时间,特别是3号。到目前为止,我已经尝试了Jasmine并且可以弄清楚如何进行这样的顺序测试,所以每一步(测试)都有完成下一个开始。也许有一个更好的框架来做到这一点?我只测试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";
}
}
所以基本上,我需要确保它们一个接一个地运行,而下一个运行在前一个完成之后运行。假设Make-A-Test-Call已经完成,然后测试Connection-To-The-Server-Closed是否成功。
答案 0 :(得分: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