0

问题

流行的ava包具有一个简单而强大的 javascript 测试框架:

import test from 'ava';

test('single step', t => {
    t.is('bar', 'bar');
    t.end();
});

同步代码的测试非常简单。但是,我不确定如何编写具有多个连续依赖步骤的测试。

例如,我想测试一个 REST API。我想使用创建资源POST,使用调用确保它存在GET,然后使用删除它DELETE

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

我试过什么

  • 尝试了一系列setTimeouts,其中每个调用的回调是下一个测试步骤。这是相当不可读的。

我的问题

用多个连续步骤编写测试的正确方法是什么ava

这些步骤是异步且连续的

4

2 回答 2

2

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

于 2017-06-07T07:29:02.617 回答
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

于 2017-06-06T21:07:10.023 回答