如何在测试环境中运行Rails控制台并加载test_helper.rb?

Eth*_*han 118 ruby testing ruby-on-rails shoulda

背景:我遇到了Thoughtbot的"Factory Girl"宝石的一些问题,用于创建在单位和其他测试中使用的对象.我想去控制台并运行不同的Factory Girl电话来查看发生了什么.例如,我想进去那里做...

>> Factory(:user).inspect
Run Code Online (Sandbox Code Playgroud)

我知道你可以在不同的环境中运行控制台......

$ script/console RAILS_ENV = test

但是当我这样做时,工厂课程不可用.看起来好像test_helper.rb没有加载.

我尝试了各种require调用,包括一个绝对路径,test_helper.rb但它们与此类似地失败:

$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
  Errno::ENOENT: No such file or directory - 
  /Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb
Run Code Online (Sandbox Code Playgroud)

格儿.哎呀.

Aug*_*aas 179

对于Rails <3.0

script/console --help.您会注意到语法是script/console [environment],在您的情况下script/console test.

我不确定您是否需要测试帮助程序,或者测试环境是否为您执行此操作,但使用该命令,您至少应该能够成功启动到测试环境中.

作为旁注:脚本中的各种二进制文件具有不同的设置rails环境的方式确实有点奇怪.

对于Rails 3和4

rails c test.bundle exec如果您在当前应用环境中需要此功能,请提供前置.

  • 在rails 3中,它只是`rails console [environment]` (63认同)
  • 它有点不一致,因为要启动服务器,你输入`rails server -e test` (26认同)

siv*_*udh 61

在Rails 3中,只需执行rails console testrails console productionrails console development(这是默认值).


Dav*_*ith 10

script/console test
Run Code Online (Sandbox Code Playgroud)

应该是你所需要的一切.


Tov*_*man 8

对于Rails 5.2.0:"不推荐将环境名称作为常规参数传递,并将在下一个Rails版本中删除.请改用-e选项."

rails c -e test
Run Code Online (Sandbox Code Playgroud)