在Rails中测试对未反映在数据库中的对象的更改?

时间:2012-06-06 13:49:05

标签: ruby-on-rails-3

我有一个Rails 3应用程序,我正在尝试编写一个测试用例?加载测试用例时,我可以看到它正在创建与数据库中的fixture相对应的对象。但是,如果我更改测试用例中的对象或创建另一个对象,则它们不会反映在数据库中。此外,如果我找到正确发生的新创建的对象。

这里发生了什么?另外,如何让更改反映在数据库中?

1 个答案:

答案 0 :(得分:3)

在test_helper.rb中,use_transaction_fixtures选项可能设置为true。这意味着每个测试都包含在数据库事务中。事务(在MySQL InnoDB中)必须使用“COMMIT”持久化。 rails测试框架不会这样做,因此您的数据库在每次测试后都处于新鲜状态。因此,您的更改将被回滚。

事务中的更改只能通过启动它的数据库连接来看到,从外部(在您的情况下是rails db命令)它们将不会显示。

我希望,这有帮助。