How to run Rails console in the test environment and load test_helper.rb?
背景:我对thoughtbot的"工厂女孩"gem有一些问题,它用于创建在单元和其他测试中使用的对象。我想去控制台运行不同的工厂女孩的电话,看看发生了什么。例如,我想进去有做…
1 | >> Factory(:user).inspect |
我知道您可以在不同的环境中运行控制台…
$script/console rails_env=测试
但是当我这样做的时候,工厂的课程是不可用的。看起来好像
我尝试了各种各样的
1 2 3 4 | $ 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 |
GRR。哎呀。
Rails 3
运行
我不确定您是否需要测试助手,或者测试环境是否需要,但是使用这个命令,您至少应该能够成功地引导到测试环境中。
旁注:脚本/中的各种二进制文件有不同的设置Rails环境的方法,这确实有点奇怪。
对于轨道3和4
运行
对于轨道5和6
运行
在Rails 3中,只需执行
1 | script/console test |
应该是你所需要的。
对于Rails 5.2.0:"不推荐将环境名称作为常规参数传递,将在下一个Rails版本中删除。请使用-e选项。"
1 | rails c -e test |
您可以指定控制台命令应在其中操作的环境。
1 | rails c [environment] |
实例
1)分期
1 | rails c staging |
2)用于生产
1 | rails c production |
源代码和详细描述:rails命令行
大卫·史密斯是对的
1 | script/console test |
HELP命令将显示此操作的原因:
1 2 3 4 5 | $ 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版本,
如何确保将test/test_helper.rb加载到控制台会话中?
像
对于我来说,这将返回true,表明在我启动控制台时还没有加载它。如果该语句返回false,那么您就浪费了几次击键,但仍然可以继续下去。
加载测试助手后,如何调用其中定义的方法?
在典型的测试帮助程序中,自定义方法通常定义为ActiveSupport::TestCase的实例方法。因此,如果您想调用其中一个,您需要该类的一个实例。经过反复尝试,activesupport::testcase.new有一个必需的参数,所以…传递一些东西。
如果您的测试助手有一个名为create_user的方法,您可以通过以下方式调用它:
确保安装了gem,并在environment.rb或test.rb文件中添加了以下行。
1 | config.gem"thoughtbot-factory_girl", :lib =>"factory_girl", :source =>"http://gems.github.com" |
运行Rails控制台测试环境的命令是
1 | rails c -e test |
或
1 | RAILS_ENV=test rails c |
如果你面临这样的问题
1 2 | ActiveRecord::StatementInvalid: Mysql2::Error: Table 'DB_test.users' doesn't exist: SHOW FULL FIELDS FROM `users` |
然后您应该首先通过运行
1 | bundle exec rake db:test:prepare |
测试环境
1 | rails console test # or just rails c test |
发展环境
1 | rails console # or just rails c |