我已经向Heroku部署了一个应用程序,一切正常。问题是我无法远程运行我的单元测试。我试过了:
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 <top (required)>'
/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
堆栈。
到目前为止,我最接近答案的是this blog post from 2009。
答案 0 :(得分:7)
Heroku不提供测试数据库,因此没有直接的方法可以做到这一点。理论上你可以创建一个新的heroku实例并且可以将rake任务破解为仅仅使用'production'数据库,但是我怀疑所需的努力是值得的。
答案 1 :(得分:6)
Heroku devcenter提供了有关如何管理暂存环境的说明:http://devcenter.heroku.com/articles/multiple-environments
我不知道是否可以运行单元测试,但我完全理解你为什么要这样做。
你的Heroku申请:
您可以使用暂存环境测试所有这些,但我们可以说每个单元测试,所以我认为如果我们可以在Heroku上运行单元测试会很棒。
答案 2 :(得分:5)
正常的方法是在本地进行测试,然后部署到隐藏的Heroku实例(“staging”)。然后,您可以使用Beta测试人员测试该隐藏的临时应用程序,对其运行压力测试等等。如果您对此感到满意,请将您的应用程序部署到“生产”Heroku实例。
因此,对Heroku进行测试是可能的,也可以是常规,但不能进行单元测试。
答案 3 :(得分:2)
Heroku没有测试套件,在部署到heroku之前,你真的应该在开发方面进行测试。