通过rake测试Rails:不要触摸我的dev数据库

Cor*_*all 6 unit-testing ruby-on-rails

我希望'rake test:units'在我的开发数据库关闭时成功地在准备好的测试数据库上运行测试.目前rails正在尝试从开发数据库构建测试数据库.这可能吗?

我在的情况下我的督促/ dev的数据库是关闭主机,但对于单元测试的目的,我使用的内存数据库一个SQLite.

编辑我的确切操作: 注意我使用的是Rails 2.3

我的测试数据库在config/database.yml中设置如下:

test:
  adapter: sqlite3
  database: 'sqlite3_unittest_file.dat'
  pool: 5
  timeout: 5000
Run Code Online (Sandbox Code Playgroud)

当我运行rake db:test:load测试数据库(它只是一个文件)时,会在rails-root目录中正确生成.当我跑步时rake test:units,一切正常.

现在,如果我编辑database.yml将我的DEV数据库用户名设置为错误(如'sdlkfj'),则rake test:units立即抱怨失败:

Access denied for user 'sdlkfj'@'myhostnsmae' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

当我运行此版本的"真正的",我在构建不准在生成过程中交谈过箱的系统上运行它.因此,这种与开发数据库交谈并立即呱呱叫的尝试正在扼杀我,似乎是不正确的.

jef*_*unt 7

尝试使用显式环境运行rake任务:

rake test:units RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

根据development我的经验,假设您没有指定环境.虽然测试数据库仍然会将夹具数据插入其中,但development环境中的内容仍会因某种原因而被引用.