Javascript ava中的连续异步测试步骤 问题

Javascript ava中的连续异步测试步骤 问题,javascript,testing,fixtures,ava,Javascript,Testing,Fixtures,Ava,流行的软件包提供了一个简单而强大的javascript测试框架: 从“ava”导入测试; 测试('single step',t=>{ t、 是('bar','bar'); t、 end(); }); 同步代码的测试非常简单。但是,我不知道如何使用多个连续的依赖步骤编写测试 例如,我想测试一个RESTAPI。我想使用POST创建一个资源,确保它存在于GET调用中,并使用delete删除它 不用说,顺序很重要:POST调用必须在GET调用开始之前完成,有时我们甚至希望在两个步骤之间有一个睡眠时间

流行的软件包提供了一个简单而强大的javascript测试框架:

从“ava”导入测试;
测试('single step',t=>{
t、 是('bar','bar');
t、 end();
});
同步代码的测试非常简单。但是,我不知道如何使用多个连续的依赖步骤编写测试

例如,我想测试一个RESTAPI。我想使用
POST
创建一个资源,确保它存在于
GET
调用中,并使用
delete
删除它

不用说,顺序很重要:
POST
调用必须在
GET
调用开始之前完成,有时我们甚至希望在两个步骤之间有一个睡眠时间

我试过什么
  • 尝试了一系列
    setTimeout
    s,其中每个调用的回调是下一个测试步骤。这是相当不可读的
我的问题 使用
ava
编写包含多个连续步骤的测试的正确方法是什么


这些步骤是异步和连续的

如果您通过顺序执行器运行代码,您可以将缓慢的函数和逻辑混合到复杂的场景中。您只需将代码编写为同步代码,并将其放入函数:

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
});

请参阅此处的更多示例:

如果通过顺序执行器运行代码,则可以将缓慢的函数和逻辑混合到复杂场景中。您只需将代码编写为同步代码,并将其放入函数:

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
});

请参阅此处的更多示例:

如果您希望在单个测试中完成所有这些步骤,请确保您可以从请求库中获得承诺。然后使用
async
/
wait

如果您希望在单个测试中完成所有这些步骤,请确保您可以从请求库中获得承诺。然后使用
async
/
wait