流行的ava软件包为javascript提供了一个简单而强大的测试框架:
import test from 'ava';
test('single step', t => {
t.is('bar', 'bar');
t.end();
});
同步代码的测试非常简单。但是,我不确定如何使用多个连续的相关步骤编写测试。
例如,我想测试REST API。我想使用POST
创建资源,确保它与GET
调用一起存在,并使用DELETE
将其删除。
毋庸置疑,订单很重要:POST
电话必须在GET
电话开始之前完成,有时我们甚至想要在两个步骤之间休眠。
setTimeout
s,其中每个调用的回调是下一个测试步骤。这是相当难以理解的。使用ava
多个连续步骤编写测试的正确方法是什么?
这些步骤是异步和连续的
答案 0 :(得分:2)
如果您希望在单个测试中完成所有这些步骤,请确保您可以从您的请求库中获得承诺。然后使用async
/ await
。
答案 1 :(得分:0)
如果通过顺序执行程序nsynjs运行代码,则可以将慢速函数和逻辑混合到复杂场景中。您只需将代码编写为同步代码,并将其置于函数中:
function process() {
var data = jQueryGetJSON(nsynjsCtx, "data/index.json").data; // ajax call to get some data
for(var i in data) { // data is ready at this point
var resp = jQueryGetJSON(nsynjsCtx, "data/"+data[i]).data; // another ajax call
// ... resp is ready here, do processing of resp...
nsynWait(nsynjsCtx,100); // wait 100ms
}
return someResult;
}
然后通过nsynjs运行该功能:
nsynjs.run(process,this,function (someResult) {
console.log('done');
// put t.end() inside this callback
});
点击此处查看更多示例:https://github.com/amaksr/nsynjs/tree/master/examples