【问题标题】:Rails unit tests without db setup or teardown?没有数据库设置或拆卸的 Rails 单元测试?
【发布时间】:2011-11-01 17:30:27
【问题描述】:

我想编写一些不对数据库进行任何更改的单元测试。

我有一个 Rails 2.3.11 应用程序。这个应用程序有一个 SQLite 数据库作为它的主数据库。在许多方面,这是一个普通的 Rails 应用程序。

这款应用的独特之处在于它还建立了与 SQL Server 数据库的连接。我有一些模型是抽象类,它们使用 SQL Server 数据库。我有before_savebefore_destroy 回调来防止对SQL Server 数据库进行任何更改。此外,连接到 SQL Server 的用户凭据应该是只读的。

我想编写对 SQL Server 数据库中已经存在的数据进行断言的单元测试。但我不想设置或拆除 SQL Server 数据库。

我害怕只是看看会发生什么。我想在单元测试中设置一个设置,以防止 Rails 尝试设置或拆除 SQL Server 数据库。这可能吗?我该怎么做?

谢谢!

【问题讨论】:

  • 顺便说一下,我想在测试环境中使用与在开发环境中相同的 SQL Server 数据库连接。

标签: ruby-on-rails unit-testing tdd abstract-class readonly


【解决方案1】:

设置/拆除只影响应用程序数据库(听起来像 SQLite),而不影响额外的外部数据库连接。

此外,您应该将测试环境与生产环境完全分开。因此,如果您也在使用测试 SQLServer 数据库(并且您应该使用测试数据,而不是生产数据),那么即使最坏的情况发生,您也应该没问题。

【讨论】:

  • 所以我没什么好担心的,对吗?并且有 2 个 SQL Server 数据库实例:生产和开发。没有用于测试的第三个 SQL Server 数据库实例。我想在测试环境中使用开发SQL Server db。
  • 如果该 SQLServer DB 完全在您的应用程序之外,那么您应该没问题。如果您对此感到担忧(或者您的问题可能遗漏了一些重要的事情),您应该创建一个不会受到伤害的测试数据库。例如,我们的许多生产应用程序使用自己的应用程序 PostgreSQL 数据库,但也依赖于处理用户身份验证的 Oracle 数据库,这在技术上不属于 Rails 应用程序的一部分。我们没有让我们的测试/开发环境接触生产 Oracle DB,而是运行 Oracle DB 的测试版本,这样我们就不会意外中断生产。
  • 感谢您的建议。我会看看服务器团队是否会为测试套件创建另一个 SQL Server 数据库实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 2013-12-28
  • 2018-09-12
相关资源
最近更新 更多