对数据库进行集成测试 – AVA

前端之家收集整理的这篇文章主要介绍了对数据库进行集成测试 – AVA前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在编写单元测试后,我面临着集成测试,其中包括测试库对数据库(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',{title: 'My task3',description: 'My duty3',]);
});

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

我被迫使用串行功能来允许每次测试完成并以串行方式清除数据块.

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

如果我正在写的测试只是读取数据,我可以按照#311号问题中提到的前脚本和后脚本进行播种和清理操作,并保持并行测试.

我也发现非常好,我可以使用t.context的方式将用户/任务对象传递到我的测试中.

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

你如何使用ava来处理这种测试?

解决方法

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

或者,如果您可以对每个测试使用不同的数据库,以允许并行运行它们.

猜你在找的MsSQL相关文章