2011-08-21 133 views
5

我想知道我是否可以在rails控制台而不是命令行下运行我的测试。 其实这样做的基本原理是rake测试:命令行上的单位需要很长时间来加载rails环境。所以我想,为什么不启动一个控制台来加载一次环境,然后继续运行rake unit:每次我想检查我的代码时进行测试。毕竟,rails意味着敏捷并促进敏捷开发。所以我尝试了这个。首先,我不得不说:Rails控制台和耙测试:单位

irb(main):002:0> Rake::Task['test.units'].invoke 
RuntimeError: Don't know how to build task 'test.units' 

我想我需要以某种方式告诉它到哪里寻找:

需要“佣金”

但即使这样做,我得到了错误消息后。有什么想法吗?

感谢

克里斯

回答

5
ruby-1.9.2-p290 :001 > require 'rake' 
ruby-1.9.2-p290 :002 > r = Rake.application 
ruby-1.9.2-p290 :003 > r.init 
ruby-1.9.2-p290 :004 > r.load_rakefile 
ruby-1.9.2-p290 :005 > r['test:units'].invoke 
+1

谢谢,它第一次工作(但实际上仍然需要很长时间才能运行),然后当我尝试运行r ['test:units']时返回nil,再次调用。我想我会看看Spork。 – Chris

+1

实际上,添加r.clear允许我重复r.load_rakefile和r ['test:units']。再次调用。在我的计算机上运行此操作的时间从80秒(在命令行上耙动)减少到25秒,因此有显着的改善,但仍然很慢。 – Chris

0

一个更好的想法是使用叉勺不断加载的环境,然后自动测试文件时改变自动运行测试。

+0

是的,我认为这是要走的路。但是,我在一个小型的uni模块中使用RoR,并且不想谈论rspec和Agile Software with Rails书中未涉及的其他内容。我不知道是否核心轨道捆绑应该切换到spork等。它似乎有点奇怪,它仍然包括对于TDD来说太慢的测试技术。 – Chris