使用'rake test`的问题

时间:2011-06-01 10:40:43

标签: ruby-on-rails ruby ruby-on-rails-3 unit-testing rake

我想知道如何在我的rails应用程序中设置测试。当我运行rake test时,首先奇怪的是,它会针对我的dev启动一堆CREATE TABLE。数据库(哼..不喜欢这个......)。所以我启动rake test RAILS_ENV=test,我甚至尝试bundle exec rake test RAILS_ENV=test。现在,CREATE TABLE针对我的测试数据库,但都失败并出现此错误:

** Execute test:units
test/unit/category_test.rb:5:in `test': unknown command 't' (ArgumentError)
    from test/unit/category_test.rb:5:in `<class:CategoryTest>'

我在Rails 3中使用了基本的生成器,并且没有改变任何东西。所以我在caterogy_test.rb中有这个:

require 'test_helper'

class CategoryTest < ActiveSupport::TestCase
   # Replace this with your real tests.

   test "the truth" do
       assert true
   end
end

我使用Rails 3.0.7和基本配置。

有什么想法吗?

修改

我变得疯狂,做了很多尝试,似乎都没有效果。当我使用一些东西开始一个新的应用程序时,rake test工作正常但是当我在我当前的那个上尝试这个时,它总是针对我的开发。 db并且根本不工作。我试图编辑测试文件,还原它们,尝试以不同的方式删除/设置测试数据库,尝试不同的rake版本,比较我当前应用程序的一方面和另一方面的全新应用程序。 ..什么都没发现..帮助!

编辑2

听起来很蹩脚,rakerake test做同样的事情是否正常?

编辑3

听起来很可能,当我继续处理错误时,我意识到每次运行rake test时,它都会在开发环境中运行,而不是测试环境(查看日志)。它在我的计算机OSX和我们的服务器FreeBSD上为所有Rails 3.0.7应用程序执行此操作。您确定rake test默认情况下应该在测试环境中工作吗?

编辑4

请帮忙!

编辑5 - 摘要

在我的计算机或我们的Rails 3.0.7服务器上使用不同的应用程序运行rake test时,它会执行以下操作:

  • 针对开发人员运行CREATE TABLEINSERT INTO迁移。分贝。
  • 不要清空开发者。分贝。
  • development.log写的不是test.log
  • 还存在错误unknowm comman 't'与一个特定应用的问题。

编辑6 - db config

与默认值相比没有任何变化:https://gist.github.com/1006199

编辑7

rake db:test:prepare --trace - &gt;什么都没有打破(但保持打印(first_time) https://gist.github.com/1007340

使用RAILS_ENV="test"耙,一切都很顺利。它写在测试日志上。

ruby -I test test/unit/category_test.rbrake相同的错误,但没有写在dev上。或测试日志。

2 个答案:

答案 0 :(得分:3)

一堆无序的答案:

  • “CREATE TABLE”语句通常意味着您的test_db是从头开始创建的(默认情况下,在测试任务之前,启动db:migrate)。你确定他们在dev_db上被调用了吗? 还检查你的config / database.yml,看是否有一些拼写错误(例如:为测试和开发环境使用相同的表)

  • 看起来某些迁移文件中存在错误(错误记住了迁移中的阻止)。

  • “rake test”是默认任务,这就是为什么当你只是在没有参数的情况下启动“rake”时它就会运行。

编辑:

根据我在编辑中看到的内容,从5及以上,看起来你有一些环境文件的问题。所以试着仔细检查: * config / environments / test.rb * config / application.rb * config / environment.rb

如果使用RAILS_ENV =“test”,一切顺利,那么我几乎可以肯定你已经改变了应用中的一些默认行为(配置,env变量,任何特定的宝石?)

另外,在test / test_helper.rb中,在文件开头添加RAILS_ENV ='test',这会强制测试环境。

答案 1 :(得分:1)

我有同样的错误信息,除了我说:“test”:未知命令'i'(ArgumentError)。 “修复”或“解决方法”只是使用:

$> bundle exec rake test

而不是使用'rake test'