【问题标题】:How can I run integration tests without modifying the database?如何在不修改数据库的情况下运行集成测试?
【发布时间】:2020-02-01 22:01:21
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    • 内存数据库,例如(h2)
    • docker 容器中的数据库。

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-09
        • 2012-08-15
        • 2011-04-15
        • 2011-08-20
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        相关资源
        最近更新 更多