2012-11-11 54 views
0

我做灯具的一些(不是全部)我的模型,并写在哪些对象等车型的测试创建并保存查询数据库时返回。我正在使用内置于Rails的标准测试系统(rake test)。在我的一个测试中,我叫debuggerRails进行测试 - 没有行测试期间

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

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

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

+0

当你连接时,你是在'test'环境还是在'development' /'production'环境中? – alestanis

+0

@alestanis - 绝对'测试'。 –

回答

0

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