Ruby on rails 使用rake测试时出现的问题`

Ruby on rails 使用rake测试时出现的问题`,ruby-on-rails,ruby,ruby-on-rails-3,unit-testing,rake,Ruby On Rails,Ruby,Ruby On Rails 3,Unit Testing,Rake,我想知道如何在rails应用程序中设置测试。当我运行rake测试时,首先奇怪的是,它针对我的开发数据库启动了一堆CREATE TABLE(哼..不喜欢这样..)。所以我启动了rake-test-RAILS\u-ENV=test,甚至尝试了bundle-exec-rake-test-RAILS\u-ENV=test。现在,CREATE TABLE针对我的测试数据库,但由于以下错误而全部失败: ** Execute test:units test/unit/category_test.rb:5:in

我想知道如何在rails应用程序中设置测试。当我运行
rake测试时,首先奇怪的是,它针对我的开发数据库启动了一堆
CREATE TABLE
(哼..不喜欢这样..)。所以我启动了
rake-test-RAILS\u-ENV=test
,甚至尝试了
bundle-exec-rake-test-RAILS\u-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>'
**执行测试:单元
test/unit/category_test.rb:5:在'test'中:未知命令't'(ArgumentError)
来自test/unit/category_test.rb:5:in`'
我在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
需要“测试助手”
类CategoryTest
我使用Rails 3.0.7和基本配置

有什么想法吗

编辑

我开始发疯了,做了很多尝试,但似乎都不管用。当我用一些东西启动一个新的应用程序时,
rake test
可以很好地工作,但是当我在当前的应用程序上尝试这个时,它总是针对我的dev.db启动,根本不工作。我试着编辑测试文件,还原它们,尝试用不同的方法删除/设置测试数据库,尝试不同的rake版本,比较我当前应用程序和另一个全新应用程序的许多方面。。。什么也没找到。。救命啊

编辑2

听起来很蹩脚,但是
rake
rake测试做相同的事情是正常的吗

编辑3


听起来很有可能,当我继续研究错误的地方时,我意识到每次我运行
rake test
,它都是在开发环境中进行的,而不是在测试环境中(查看日志)。它在我的电脑OSX和我们的服务器FreeBSD上为所有Rails 3.0.7应用程序实现了这一点。您确定默认情况下,
rake测试
应该在测试环境中工作吗

编辑4

请帮忙

编辑5-摘要

在我的电脑上或Rails 3.0.7中的服务器上使用不同的应用程序运行
rake测试时,它会执行以下操作:

  • 对dev.db运行
    CREATE TABLE
    INSERT-INTO
    迁移
  • 不要清空dev.db
  • 写入development.log而不是test.log
  • 还有一个问题是,一个特定的应用程序出现了错误
    unknowm comman't'
编辑6-db配置

默认设置尚未更改:

编辑7

rake db:test:prepare--trace
->无中断(但保持打印(第一次)

使用rake的
RAILS\u ENV=“test”
一切正常。它会写入测试日志


ruby-I test/unit/category_test.rb
rake
的错误相同,但没有写入开发或测试日志。

一堆无序的答案:

  • “createtable”语句通常意味着您的测试数据库是从头创建的(默认情况下,在启动测试任务之前,会启动db:migrate)。您确定在dev_数据库上调用了它们吗? 还要检查您的config/database.yml,看看是否有一些输入错误(例如:在测试和开发环境中使用相同的表)

  • 您的某些迁移文件中似乎有错误(迁移中的“t”错误记忆块)

  • “rake测试”是默认任务,这就是为什么当您只启动“rake”而不带参数时它会运行的原因

编辑:

根据我在编辑中看到的内容,从第5页和第5页以上的内容来看,您似乎对环境文件有一些问题。因此,请尝试再次检查: *config/environments/test.rb *config/application.rb *config/environment.rb

如果使用RAILS_ENV=“test”,一切正常,那么我几乎可以肯定您已经更改了应用程序中的一些默认行为(配置、环境变量、任何特定的gem?)


另外,在test/test\u helper.rb中,在文件开头添加RAILS\u ENV='test',这将强制测试环境。

我收到了相同的错误消息,只是对我说:在'test':未知命令'I'(ArgumentError)。 “修复”或“解决方法”只是简单地使用:

$> bundle exec rake test

不使用“rake test”

您确定没有意外地在该测试的第5行上放置空格。错误消息是在文件test/unit/category_test.rb的第5行上有一个无法理解的命令“t”。如果意外地键入空格(如t est)或有一个额外的“t”,可能会发生这种情况在你的环境中肯定有一些奇怪的东西,因为
rake test
通常知道它应该在“测试”环境中工作。我从来没有手动强制RAILS_ENV。你修改过任何东西吗?当你创建一个新的RAILS应用程序并仅仅创建相同的单一资源时,这个错误会重现吗?与你的q无关继续,但是当您刚刚开始测试时,为什么不试试RSpec呢?试着运行
rake db:test:prepare--trace
并确保您的迁移是最新的(rake db:migrate)。你能自己运行测试文件吗?
ruby-I test/unit/category_test.rb
听起来很有可能,当我继续研究问题的时候,我意识到每次运行
rake test
,它都在开发环境中运行,而不是在测试环境中(查看日志)。它在我的计算机OSX和我们的服务器FreeBSD上为所有Rails 3.0.7应用程序执行此操作。你确定默认情况下,
rake test
应该在测试环境下工作吗?你能粘贴你的config/database.yml文件吗?如果运行:Rails_ENV=“test”bundle exec rake test会发生什么情况?(注意,我在调用之前放置了Rails_ENV)。同时检查test/test_helper.rb。它的第一行应该是:ENV[“RAILS_ENV”]=“test”。对于我来说,
t
i
是测试字符串名称的第一个字母:
test't...
test'i..