【问题标题】:Run cucumber tests on heroku在heroku上运行黄瓜测试
【发布时间】:2011-04-10 23:21:56
【问题描述】:

我正在考虑在我的 rails 应用程序上运行我的黄瓜测试,当它在 heroku 上运行时。这是检查开发环境和部署环境之间差异的明智方法吗?

有没有人遇到过这种情况? Rake -T 告诉我“黄瓜耙任务不可用(黄瓜未安装)”,即使我在 .gems 文件中指定了黄瓜轨。我是不是从错误的角度来处理这个问题?

有什么想法或建议吗?

【问题讨论】:

    标签: ruby-on-rails testing deployment cucumber heroku


    【解决方案1】:

    cucumber gem 是否也在您的 Gem 清单中?

    【讨论】:

      【解决方案2】:

      这需要创建、修改和随后删除测试数据库,并且由于 Heroku 忽略了 database.yml 文件,这根本不可能。

      您可以通过在控制台中设置来尝试在测试环境中运行您的应用,然后您就可以运行测试了

      heroku config:add RACK_ENV=test
      

      但即使你让它工作了,也要告别你的生产数据库,因为我很确定 Heroku 将再次覆盖 database.yml 并使用它自动分配给你的应用程序的数据库。

      您也可以考虑创建一个second app on Heroku 仅用于测试。

      【讨论】:

        【解决方案3】:

        您可以使用单独的 Heroku 实例并将您的应用部署到那里。然后,您应该能够通过 heroku rake 运行测试。

        您可以在 heroku 命令行中使用 --app 参数来选择在哪个实例上运行命令。只是不要意外删除您的产品数据库。

        【讨论】:

          【解决方案4】:

          由于直接在 Heroku 上运行测试似乎不是那么简单,我求助于将本地测试定向到 Heroku 应用程序,使用 HTTParty 调用而不是通常的 Capybara 调用。

          这可以很好地工作,至少对于集成测试而言。

          例如,这是我在针对本地应用运行常规本地测试时在步骤定义中使用的方法:

            def my_http_request(httpmethod, path, body = '')
              send httpmethod, path, body
            end
          

          这是我在对 Heroku 应用程序运行本地测试时使用的方法:

            def my_http_request(httpmethod, path, body = '')
              options = body.blank? ? { :headers => {"Content-Length" => "0"} } : { :body => body }
              @last_response = HTTParty.send httpmethod, 'https://lit-*****-6305.herokuapp.com' + path, options
            end
          

          我将一个或另一个加载到 Cucumber World 中,基于传递给 Cucumber 本身的特定选项并设置在相关配置文件中(这样当我想针对 Heroku 进行测试时,我可以简单地调用 cucumber -p heroku)。

          当然,在第二种情况下,我还必须在每个场景之前初始化 Heroku 数据库,例如在“之前”挂钩中调用类似这样的东西:

            def start_my_heroku_tests
              @@db = PGconn.open(:host => 'ec2-54-**-****-44.compute-1.amazonaws.com', :port => 5432, :dbname => 'd4d********rmi4k', :user => 'llcm*******jcyh', :password => '7FN_************gcxq')
              @@db.exec "TRUNCATE sources"
              @@db.exec "TRUNCATE posts"
            end
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-10-13
            • 1970-01-01
            • 1970-01-01
            • 2020-12-19
            • 1970-01-01
            • 2020-03-28
            • 1970-01-01
            相关资源
            最近更新 更多