没有数据库设置或拆卸的Rails单元测试?

时间:2011-11-01 17:30:28

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

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

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

安装/拆除只会影响应用程序数据库(SQLite,听起来像),而不会影响其他外部数据库连接。

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