【问题标题】:Do I need to run Webrick before running Cucumber with Selenium?在使用 Selenium 运行 Cucumber 之前,我是否需要运行 Webrick?
【发布时间】:2011-11-06 01:17:45
【问题描述】:

如果我使用带有 selenium web 驱动程序的 cucumber/capybara 进行测试,是否需要在执行 cucumber 之前在单独的终端中打开 rails 服务器?

(目前我在服务器打开的情况下运行它,但我从 sqlite 收到“数据库已锁定”错误,我认为这是黄瓜和 webrick 冲突)

【问题讨论】:

    标签: ruby-on-rails sqlite selenium cucumber capybara


    【解决方案1】:

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

    数据库被锁定,这是在第一次测试时发生的,还是在稍后的测试中发生的?如果它稍后在测试中,那么当您进入下一个测试时,您可能有一个更大的数据库事务正在进行中。如果您认为是这种情况,请在第一次测试结束时抛出“sleep 30”以检查...给 DB 一些时间冷却。如果解决了问题,请在代码中查找运行异常长的数据库事务的任何内容。

    增强测试的好方法是: https://github.com/bmabey/database_cleaner

    它应该有助于终止任何数据库测试交互。希望这可以让您走上正确的道路。

    【讨论】:

    • 你说得对,这似乎效果更好。它发生在第一次测试中;似乎交易不会完成,但它只是几个小插入,所以我不应该想象它需要太长时间。还有什么可能导致它卡住吗?
    • 重置您的测试数据库RAILS_ENV=test rake db:reset 我相信...(如果不是那个,请执行rake -T 以查看任务并找到一个执行重置的数据库 - db:drop 和db:setup 可能必须运行)。如果在测试数据库上重新启动不起作用,请在可视化测试中检查插入:启动 rails 服务器,在浏览器中执行测试,然后查看控制台显示的内容。也许你可以从中得到一个迹象。
    • 对于其他遇到这些错误的人,请检查数据库清理器是否设置为 sqlite 的截断 - 似乎效果更好。
    猜你喜欢
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多