在编写单元测试之后,我面临集成测试,其中包括针对数据库(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();
});
Run Code Online (Sandbox Code Playgroud)
我被迫使用串行功能允许每个测试完成并以串行方式清除DB.
如果测试同时共享相同的数据,我的测试可能会更新或删除可能导致误报的数据.
如果我正在写的测试只是读取数据,我只是做直播,只是作为清洁的工作pre,并post在问题中提到的脚本#311,并保持测试并行.
我也发现非常好,我可以使用的方式t.context,并将用户/任务对象传递到我的测试中.
是这个,我们被迫使用串行测试执行的罕见情况?
你会如何使用ava解决这种测试?
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |