【问题标题】:How can I write a test module that needs an operative mySQL database?如何编写需要可运行的 mySQL 数据库的测试模块?
【发布时间】:2014-04-01 14:07:01
【问题描述】:

我正在编写一个 nodejs npm 模块,它需要一个 mySQL 数据库来运行。

我想编写一个连接到“假”数据库的测试模块并对其进行一些操作。

我已经在我的开发机器上本地设置了我的测试数据库,但我希望这个测试可以在任何机器上工作。

编写依赖于运行中的 mySQL 数据库的集成测试模块的最佳实践是什么?

网络中是否存在任何公共服务,我可以在其中获得临时 mysql 用户/密码,我可以在有限的时间/大小内执行一些操作?

【问题讨论】:

    标签: mysql node.js testing orm


    【解决方案1】:

    通常您会设置一个持续集成 (CI) 系统,该系统会在您每次提交对版本控制系统的更改时执行您的测试。 CI 系统将提供一个干净的 MySQL 数据库,您的测试将针对该数据库运行。如果您在云中使用 CI 系统,您通常可以轻松配置它以提供数据库。例如。见Travis CI

    如果您设置了 CI 系统,其他开发人员仍然需要在他们的计算机上运行他们自己的 MySQL 数据库才能执行测试。或者,您可以在测试中使用模拟而不是真实数据库。详情见:How do you mock MySQL (without an ORM) in Node.js

    但是,使用模拟不会给您足够的测试结果,因为模拟只是以简单的方式模拟数据库。有时模拟可能太简单或只是有问题。因此,您至少需要针对真实数据库运行一些测试。因此,您可以选择使用 CI 系统针对真实数据库运行测试,并在开发期间针对模拟运行测试。

    【讨论】:

      【解决方案2】:

      不太完全理解我建议Amazon RDS 进行短期测试的问题,其中需要通过公共互联网访问某些内容。如果用于任何真实流量,Amazon Web 服务可能会很快变得昂贵,但对于任何概念验证来说仍然是一个不错的选择。

      【讨论】:

        猜你喜欢
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多