ava

时间:2017-06-06 19:19:37

标签: javascript testing fixtures ava

问题

流行的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多个连续步骤编写测试的正确方法是什么?

这些步骤是异步和连续的

2 个答案:

答案 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