3

我使用 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 中实现此功能的另一种方法吗?

4

2 回答 2

3

AVA 本身有一个未解决的问题来支持这一点:https ://github.com/avajs/ava/issues/1565

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

于 2017-12-05T13:53:26.570 回答
2

我不知道 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);
}));
于 2017-12-04T12:31:43.040 回答