ruby on rails-使用“rake test”时出现问题



我想知道如何在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>'

我在Rails3中使用了基本的生成器,没有做任何更改。所以我在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工作得很好,但当我在当前应用程序上尝试时,它总是针对我的dev.db启动,根本不工作。我尝试过编辑测试文件,恢复它们,尝试用不同的方式删除/设置测试数据库,尝试不同的rake版本,比较了很多东西,一方面是我当前的应用程序,另一方面是全新的应用程序。。。一无所获。。帮助

编辑2

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

编辑3

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

编辑4

请帮忙!

编辑5-摘要

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

  • 针对dev.db运行CREATE TABLEINSERT INTO迁移
  • 不要清空dev.db
  • development.log被写入而不是test.log
  • 也是一个特定应用程序的错误CCD_ 14的问题

编辑6-数据库配置

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

编辑7

rake db:test:prepare --trace->没有中断(但继续打印(第一次)https://gist.github.com/1007340

有了RAILS_ENV="test"作为rake,一切都很顺利。它写在测试日志上。

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

一堆无序的答案:

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

  • 看起来您的一些迁移文件中有一个错误(迁移中的t错误记忆块)。

  • "rake测试"是默认任务,这就是为什么在不带参数的情况下启动"rake"时会运行它。

编辑:

根据我在编辑中看到的,从5到更高版本,看起来你对环境文件有一些问题。所以试着仔细检查:*config/environments/test.rb*config/application.rb*config/enenvironment.rb

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

此外,在test/test_help.rb中,在文件的开头添加RAILS_ENV='test',这将强制测试环境。

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

$> bundle exec rake test

而不是使用"rake test"

相关内容

  • 没有找到相关文章

最新更新