Rails 3.1,rspec,后卫和spork在Windows上真的很慢

我想成为一个更好的测试人员。 设置有这么多问题我不知道它是否值得。

有人可以帮忙吗?

我在Windows机器上运行Rails 3.1,rspec,后卫水豚和spork。 我使用了防护sporkgem。 这是我运行bundle exec guard时得到的

看看“在421.87秒完成”这一行。 这是一次测试!

我看到我收到一个错误,警告spork抱怨没有fork支持(Windows问题),但后来这行“./magazine_slave.rb:22:在’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 , 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 

因为rspec加载了rails环境,所以它很慢。 你获得的gem越多,它就越慢

这就是为什么spork是一个很好的工具。 它加载了rails环境,guard可以在不重新加载rails环境的情况下查找更改。 但是守卫sporkgem中有一个bug。 它不适用于Windows,因为它依赖于fork。 即使是坚硬的spork也不要在窗户上使用叉子 – spork。 非UNIX系统不支持Fork。

我研究了这个问题并最终得到了一个不同的方法。 我将逻辑删除到lib文件夹,并且不在规范中包含spec_helper文件。 然后rails不会加载,只有特定的测试逻辑。 这很快,迫使我编写更易读的代码。

有关此主题的更多信息,请参阅Cory Haines的演讲video 。