在Heroku上运行Railsunit testing

我已经向Heroku部署了一个应用程序,一切正常。 问题是我无法远程运行我的unit testing。 我试过了:

heroku rake test:units 

 heroku rake db:test:prepare 

但对于我来说,我得到了一个巨大的堆栈跟踪,结束于:

 rake aborted! undefined method `[]' for nil:NilClass /app/[id]/home/.bundle/gems/ruby/1.9.1/gems/activerecord-3.0.3/lib/active_record/railties/databases.rake:429:in `block (3 levels) in ' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:634:in `call' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:634:in `block in execute' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:629:in `each' /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:629:in `execute' 

我正在运行bamboo-mri-1.9.2堆栈。

到目前为止,我最接近答案的是2009年的博客文章 。

Heroku不提供测试数据库,因此没有直接的方法可以做到这一点。 理论上你可以创建一个新的heroku实例并且可以将rake任务破解为仅仅使用’production’数据库,但是我怀疑所需的努力是值得的。

Heroku devcenter提供了有关如何管理暂存环境的说明: http ://devcenter.heroku.com/articles/multiple-environments

我不知道是否可以运行unit testing,但我完全理解你为什么要这样做。

你的Heroku申请:

  • 你本地系统可能有不同的gem(据我所知,如果你在Windows下开发,你的Gemfile.lock会被忽略)
  • 可能有一个不同的操作系统(一些Ruby库,因为IO在Windows和Linux上的行为方式不同)
  • 可能有不同的ruby版本
  • 可能有一个不同的数据库系统(使用与您在Heroku上使用的配置完全相同的配置似乎不那么容易)
  • 更一般地说,将在不同的系统上运行(Linux版本,ImageMagick等)

您可以使用暂存环境测试所有这些,但我们可以说对于每个unit testing,所以我认为如果我们可以在Heroku上运行unit testing会很棒。

通常的方法是在本地进行测试,然后部署到隐藏的Heroku实例(“staging”)。 然后,您可以使用Beta测试人员测试该隐藏的临时应用程序,对其运行压力测试等等。 如果您对此感到满意,请将您的应用程序部署到“生产”Heroku实例。

因此,在Heroku上进行测试是可能的,也可以是常规,但不能进行unit testing

Heroku没有测试套件,在部署到heroku之前,你真的应该在开发方面进行测试。