首页 > 解决方案 > 如何减少这些之前/之后操作中的代码重复?

问题描述

我正在尝试对真实数据库进行集成测试,但我是 jest 和 knex 的新手。

这是我到目前为止所拥有的:

describe('FooRepository', () => {
  let dbName;
  let conn;

  beforeAll(async () => {
    conn = getConnection();
    dbName = cryptoRandomString({ length: 5, characters: 'abcdefghijklmnopqrstuvwxyz' });
    await conn.raw(`CREATE DATABASE ${dbName}`);
    Model.knex(conn);
  });

  afterAll(async () => {
    await conn.raw(`DROP DATABASE ${dbName}`);
    await conn.destroy();
  });

  beforeEach(async () => {
    await conn.migrate.latest();
  });

  afterEach(async () => {
    await conn.migrate.rollback();
  });

  describe('getFooByID', () => {
    // test getFooByID()
  })
})

如何将此 dbName、conn 以及之前/之后的操作放入可重用的地方?谢谢

标签: node.jsjestjsknex.jsobjection.js

解决方案


您可以在全局范围内使用globalSetupglobalTeardown设置可以跨测试使用的东西。更多信息在这里 -

https://jestjs.io/docs/en/configuration#globalsetup-string


推荐阅读