AVA:为每个测试用例设置不同的超时

时间:2017-12-04 10:16:53

标签: javascript unit-testing testing ecmascript-6 ava

我使用AVA编写异步测试,需要为每个测试用例设置自定义超时。我没有找到任何有关这种可能性的信息,我的测试似乎是这样的:



import test from 'ava';

test.cb('super test', t => {
    setTimeout(() => {
        t.is(1, 1);
        t.end();
    }, 10000);

    setTimeout(() => {
        t.fail("Timeout error!");
        t.end();
    }, 100);
});




有人知道在AVA中实现这个的另一种方法吗?

2 个答案:

答案 0 :(得分:3)

我不知道AVA是否内置了这样的东西。我怀疑不是,因为它似乎是一个非常不寻常的用例。

但是你可以创建一个实用某种“超时测试”的实用程序函数:

import test from 'ava';

function timeout (ms, fn) {
   return function (t) {
       setTimeout(() => {
           t.fail("Timeout error!")
           t.end()
       }, ms)
       fn(t)
   }
}

test.cb('super test', timeout(10000, t => {
    t.is(1, 1);
}));

答案 1 :(得分:2)

在AVA中有一个未解决的问题:https://github.com/avajs/ava/issues/1565

在你登陆之前,你必须自己管理一个计时器。正常测试完成后,不要忘记清除它。