1

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

这里发生了什么?另外,我怎样才能让更改反映在数据库中?

4

1 回答 1

4

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

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

我希望这有帮助。

于 2012-06-06T15:15:57.060 回答