0

我已经为我的一些(不是全部)模型制作了固定装置,并编写了测试,其中创建和保存了其他模型的对象。rake test我正在使用 Rails ( )中内置的标准测试系统。在我的一项测试中,我调用了debugger.

在调试器中,调用Login.all返回两个在测试中创建的登录。但是,如果我连接到数据库(一个 PostgreSQL 数据库,我正在使用 pgAdmin 3 连接)并执行 a select * from logins,则不会返回任何行。

我知道这是正确的数据库,因为我的灯具都在那里(例如,如果我运行select * from users,我所有的灯具用户都会出现)。

我假设当我#save在测试期间调用 ActiveRecord 对象时,它实际上会将其插入到数据库中。这个假设是不正确的,还是我做错了什么?

4

1 回答 1

0

原来每个测试都在事务中运行。当调试器被触发时,事务还没有提交,所以数据库中没有任何显示。事务可以手动提交(但测试完成后数据无法回滚,因此可能与其他测试发生冲突)。

于 2012-11-11T08:38:23.723 回答