2011-11-06 89 views
3

我想成为一个更好的测试者。有这么多的问题与设置,我不知道它是否值得。Rails 3.1,rspec,guard和spork在窗口上真的很慢

有人可以帮忙吗?

我正在运行Rails 3.1,rspec,警卫水豚和spork上的窗口框。我使用警卫宝石宝石。这是我运行bundle exec后得到的结果

看看“421.87秒完成”一行。那是一个测试!

我看到guard-spork抱怨没有fork支持(Windows问题),但后来这行“./magazine_slave.rb:22:in`run'”出现错误,应该指示magazine_slave运行(Windows用杂志而不是叉子运行spork)。

任何想法?

Guard is now watching at 'c:/Users/Andreas/My Documents/Aptana Studio 3 workspace/maktaba' 
'awk' is not recognized as an internal or external command, 
operable program or batch file. 
'awk' is not recognized as an internal or external command, 
operable program or batch file. 
Starting Spork for Test::Unit & RSpec 
ERROR: Guard::Spork failed to achieve its <start>, exception was: 
NotImplementedError: fork() function is unimplemented on this machine 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork/runner.rb:40:in `fork' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork/runner.rb:40:in `spawn_child' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork/runner.rb:23:in `launch_sporks' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-spork-0.3.1/lib/guard/spork.rb:17:in `start' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:322:in `send' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:322:in `run_supervised_task' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:320:in `catch' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:320:in `run_supervised_task' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:153:in `start' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:254:in `run_on_guards' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:253:in `each' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:253:in `run_on_guards' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:252:in `catch' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:252:in `run_on_guards' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:251:in `each' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:251:in `run_on_guards' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard.rb:152:in `start' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/lib/guard/cli.rb:68:in `start' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/task.rb:22:in `send' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/task.rb:22:in `run' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/thor-0.14.6/lib/thor/base.rb:389:in `start' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/gems/guard-0.8.8/bin/guard:6 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/bin/guard:19:in `load' 
c:/Ruby/Ruby187/lib/ruby/gems/1.8/bin/guard:19 

Guard::Spork has just been fired 
Guard::RSpec is running, with RSpec 2! 
Running all specs 
F 

Failures: 

    1) UserCruds Creates a new user 
Failure/Error: click_button "Submit" 
ActionView::Template::Error: 
    You have a nil object when you didn't expect it! 
    You might have expected an instance of Array. 
    The error occurred while evaluating nil.map 
# ./app/views/users/_form.html.erb:38:in `_app_views_users__form_html_erb___24339687_119563452' 
# ./app/views/users/_form.html.erb:3:in `_app_views_users__form_html_erb___24339687_119563452' 
# ./app/views/users/new.html.erb:3:in `_app_views_users_new_html_erb___963176717_119608284' 
# ./app/controllers/users_controller.rb:52 
# ./app/controllers/users_controller.rb:47:in `create' 
# (eval):2:in `send' 
# (eval):2:in `click_button' 
# ./spec/requests/user_cruds_spec.rb:16 
# ./magazine_slave.rb:22:in `run' 
# magazine_slave_provider.rb:17 

Finished in 421.87 seconds 
1 example, 1 failure 
+0

新纪录! “在1288.48秒内完成” –

+0

实际上需要那么长时间还是它是计时器错误? Rspec改变了它的运行方式,spork到我的知识还没有适应 – Rasmus

+0

我没有计时,但它离实时不远。 –

回答

2

因为rspec加载rails环境,速度很慢。更多的宝石,你有它得到更慢

这就是为什么spork是一个伟大的工具。它加载轨道环境,并且警卫可以在不重新加载轨道环境的情况下查找更改。但是守护宝石宝石中存在一个缺陷。它不适用于Windows,因为它取决于分叉。即使是坚硬的叉子也不会在窗户上使用叉子。 Fork在非UNIX系统上不受支持。

我研究了这个问题,并以不同的方式结束了。我建立了lib文件夹的逻辑,并且不在规范中包含spec_helper文件。然后rails不会加载,只有特定的测试逻辑。这很快,迫使我写更多可读代码。

看看这个video关于科里海恩斯的谈话,了解更多关于这个问题。