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

背景:我在Thoughtbot的“Factory Girl”gem上遇到了一些问题,用它来创build单位和其他testing中使用的对象。 我想要去控制台并运行不同的Factory Girl调用来查看发生了什么事情。 例如,我想进去有做…

>> Factory(:user).inspect 

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

$脚本/控制台RAILS_ENV =testing

但是当我这样做,工厂类是不可用的。 看起来好像test_helper.rb没有被加载。

我尝试了各种require调用,包括test_helper.rb的绝对path,但是它们的失败类似于:

 $ 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 

格儿。 哎呀。

对于Rails <3.0

运行script/console --help 。 你会注意到,语法是script/console [environment] ,在你的情况是script/console test

我不确定是否需要testing助手,或者testing环境是否适合您,但是使用该命令,您至less应该能够成功引导到testing环境。

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

对于Rails 3和4

运行rails c test 。 如果您需要使用当前应用程序环境,请预先安装bundle exec

在Rails 3中,只是做rails console testrails console productionrails console development (这是默认的)。

 script/console test 

应该是所有你需要的。

大卫·史密斯是正确的,只是做

 script/console test 

帮助命令将显示为什么这个工程:

 $ script/console -h Usage: console [environment] [options] -s, --sandbox Rollback database modifications on exit. --irb=[irb] Invoke a different irb. --debugger Enable ruby-debugging for the console. 

这是[环境]位。

您可以指定控制台命令应运行的环境。

 rails c [environment] 

例子

1)分期

 rails c staging 

2)生产

 rails c production 

对于源代码和详细说明: Rails命令行

确保安装了GEM,并在environment.rb或test.rb文件中添加了以下行。

 config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com" 

我分享提问者的痛苦。 这里真的有三个独立的问题,其中一些问题是解决的,有些则不是:

  1. 如何在testing环境中启动控制台?

    对于最近的Rails版本, bundle exec rails c test或者替代语法。

  2. 你如何确保test / test_helper.rb被加载到该控制台会话?

    有些require './test/test_helper'应该这样做。

    对我来说,这将返回true,表示它在启动控制台时尚未加载。 如果该声明返回错误,那么你只是浪费了几个击键,但你仍然很好。

  3. 一旦加载test_helper,你如何调用在其中定义的方法?

    在典型的test_helper中,自定义方法通常被定义为ActiveSupport :: TestCase的实例方法。 所以如果你想调用其中的一个,你需要这个类的一个实例。 通过试验和错误,ActiveSupport :: TestCase.new有一个必需的参数,所以…传递一些东西。

    如果你的test_helper有一个名为create_user的方法,你可以这样调用它: ActiveSupport::TestCase.new("no idea what this is for").create_user

testing环境

 rails console test # or just rails c test 

开发环境

 rails console # or just rails c