编写单元测试后,我将面对集成测试,该测试包括针对数据库(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
就是为了这个。
或者,如果您可以对每个测试使用不同的数据库,从而可以并行运行它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句