设置数据库 - 使用 Jasmine/Jest 进行集成测试

Setting up Database - Integration Test with Jasmine/Jest

我有一堆使用 Jest(使用 Jasmine)的集成测试

describe('DB User', async () => {
  beforeEach(setup)
  afterEach(teardown)
})

在我的setupteardown方法中,我分别连接+清除数据库和断开连接。

我现在的问题是异步测试它们,因为数据库可能会在其他测试 运行 时被清除。推荐的解决方法是什么?

我无法模拟数据库,因为我正在做很多直接查询。

刚刚签出 Objection.js (Javascript ORM)。在他们的集成测试中,它基本上是创建并保持一个数据库会话和 运行 同步测试。

Objection Integration Test

基本上,在伪代码中:

var session = initialize()

describe(knexConfig.client, function () {
  before(function () {
    return session.clearDb();
  });

  after(function () {
    // destroy db connection
    return session.destroy();
  });

  // individual tests
  require('./test')(session)
});

如果有更好的答案会等待