加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:42:27 所属栏目:MsSql教程 来源:网络整理
导读:在编写单元测试后,我面临着集成测试,其中包括测试库对数据库(rethinkdb)的影响. 每个测试用例必须彼此独立,每次测试后数据库将被清除,这样它们就不会产生误报. 由于AVA架构是并行运行测试,我发现我无法以这种方式实现积极的测试.例如: test.beforeEach(async
在编写单元测试后,我面临着集成测试,其中包括测试库对数据库(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是为了这个.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读