如何在不修改数据库的情况下运行集成测试?

时间:2019-10-03 14:45:11

标签: unit-testing testing mocha tdd integration-testing

我正在为某个应用程序进行一些集成测试,测试修改数据库的路由。到目前为止,我已经在测试中添加了一些代码,以删除对数据库所做的所有更改,因为我不想更改它,但是这样做会增加很多工作,而且听起来并不正确。然后,我想到了要在测试脚本中复制数据库,进行测试,删除数据库。这样做的问题是做的时间太长了。有没有这样做的方法?

2 个答案:

答案 0 :(得分:0)

我看到两种可能的方法来解决您的问题:

  • 内存数据库例如(h2)
  • 泊坞窗容器中的数据库。

这两种方法都可以解决您的问题,您只需关闭db / container并再次运行它,在这种情况下db将会很干净,您不必关心它。只需运行一个新的。但是有一些特点:

内存更易于实现和使用,但是它可能存在方言问题,例如某些oracle sql命令不适用于H2。最终您将在不同的数据库上运行测试

带有db的Docker容器更难以插入到构建和测试中,但是它没有嵌入带有方言的DB问题,并且docker中的DB与您的真实容器相同。

答案 1 :(得分:0)

您可以在测试开始时启动数据库事务,然后将其回滚。有关详细信息,请参见以下帖子: https://lostechies.com/jimmybogard/2012/10/18/isolating-database-data-in-integration-tests/