AVA:为每个测试用例设置不同的超时
AVA: setup different timeout for each test case
我使用 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 中实现这个的另一种方法吗?
我不知道 AVA 是否内置了类似的东西。我怀疑没有,因为这似乎是一个非常不寻常的用例。
但是您可以创建一个效用函数来实现某种 "timeout test":
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);
}));
AVA 本身有一个支持这一点的开放问题:https://github.com/avajs/ava/issues/1565
在此之前,您必须自己管理计时器。不要忘记在正常测试完成后清除它。
我使用 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 中实现这个的另一种方法吗?
我不知道 AVA 是否内置了类似的东西。我怀疑没有,因为这似乎是一个非常不寻常的用例。
但是您可以创建一个效用函数来实现某种 "timeout test":
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);
}));
AVA 本身有一个支持这一点的开放问题:https://github.com/avajs/ava/issues/1565
在此之前,您必须自己管理计时器。不要忘记在正常测试完成后清除它。