gpt4 book ai didi

ava - 针对数据库的集成测试 - AVA

转载 作者:行者123 更新时间:2023-12-04 00:58:10 26 4
gpt4 key购买 nike

编写单元测试后,我面临着集成测试,其中包括针对数据库 (rethinkdb) 测试库。

每个测试用例之间必须相互独立,每次测试后都会清空数据库,以免出现误报。

由于 AVA 架构是并行运行测试,我发现我无法以这种方式实现正面测试。例如:

test.beforeEach(async function(t) {

const users = t.context.users = await DB.models.User.save([
{name: 'jhon',username: 'doe'},
{name: 'fabri',username: 'fenos'},
{name: 'will',username: 'red'},
{name: 'smith',username: 'blue'},
{name: 'paul',username: 'orange'},
{name: 'tesla',username: 'ele'},
]);

t.context.tasks = await DB.models.Task.save([
{title: 'My task1', description: 'My duty1', assignee_id: _.sample(users).id},
{title: 'My task2', description: 'My duty2', assignee_id: _.sample(users).id},
{title: 'My task3', description: 'My duty3', assignee_id: _.sample(users).id},
]);
});

test.afterEach(async (t) => {
return await DB.clearDB();
});

我被迫使用 系列 功能允许每个测试以串行方式完成和清除数据库。

我的测试可能会更新或删除数据,如果测试同时共享相同的数据,这可能会导致误报。

如果我写的测试只是读取数据,我可以像 pre一样做播种和清理的操作。和 post问题中提到的脚本 #311并保持测试并行。

我也觉得很好用,我可以用 t.context的方式并将用户/任务对象传递到我的测试中。

是这个,我们被迫使用串行测试执行的罕见情况吗?

您将如何使用 ava 处理此类测试?

最佳答案

是的,test.serial是为了这个。

或者,如果您可以为每个测试使用不同的数据库,以便您可以并行运行它们。

关于ava - 针对数据库的集成测试 - AVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com