2011-11-05 70 views
2

如果我使用一个硒web驱动程序来测试黄瓜/水豚,我是否需要在执行黄瓜之前在单独的终端中打开rails服务器?运行黄瓜硒前需要运行Webrick吗?

(目前我与服务器运行它打开,但我得到“数据库被锁定”从sqlite的错误,我相信这是黄瓜和使用WEBrick争食)

回答

2

你并不需要一个活跃的Rails服务器来运行黄瓜测试,并有一个正在运行的服务器(Webrick,Mongrel等)不应该影响你的数据库,除非你使用同一个数据库进行测试和开发。测试套件启动自己的rails副本,并应使用“AppName-Test”(默认情况下)数据库进行测试。

数据库被锁定,这是发生在第一次测试上,还是后来在测试中?如果它稍后在测试中,那么随着您进入下一个测试,您可能会有更大的数据库事务处理正在进行中。如果你认为这是事实,那么在第一次测试结束时抛出'睡眠30'来检查......给DB一些时间来降温。如果解决了这个问题,请在代码中查找运行异常长数据库事务的任何内容。

一个很好的宝石,以增加测试将是: https://github.com/bmabey/database_cleaner

应该有助于杀死任何DB测试互动。希望这能让你走上正确的道路。

+0

你说得对,这似乎更好。它在第一次测试中发生;看起来交易不会完成,但它只是一些小插入,所以我不应该想象它会花费太长时间。还有什么可能导致它卡住? – cjm2671

+1

重置你的测试数据库'RAILS_ENV = test rake db:reset'我相信...(如果那不是那个,请用'rake -T'来查看任务,并指定一个执行重置的数据库 - db:drop和db:setup可能必须运行)。如果重新开始测试数据库不起作用,请在可视化测试中检查插入内容:启动rails服务器,执行您的测试在浏览器中执行的操作,然后观察控制台正在进行的操作。也许你可以在那里看到悬挂的迹象。 – Jared

+0

固定 - 非常感谢! – cjm2671