Rails 3.1, rspec, guard и spork действительно медленно работают на Windows - PullRequest
3 голосов
/ 06 ноября 2011

Я пытаюсь быть лучшим тестером.У меня так много проблем с настройкой, что мне интересно, стоит ли это.

Может кто-нибудь помочь, пожалуйста?

Я использую Rails 3.1, rspec, охранную капибару и spork на коробке с Windows.Я использую самоцвет охранника.Это то, что я получаю, когда запускаю команду bundle exec guard

Посмотрите на строку «Завершено за 421,87 секунды».Это один тест!

Я вижу, что получаю ошибку, когда guard-spork жалуется на отсутствие поддержки fork (проблема Windows), но позже эта строка "./magazine_slave.rb:22:in` run '"должнауказывают, что magazine_slave работает (Windows запускает spork с журналом вместо fork).

Есть идеи?

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

1 Ответ

2 голосов
/ 24 ноября 2011

Поскольку rspec загружает окружение рельсов, он работает медленно.Чем больше у вас драгоценных камней, тем медленнее он становится

Вот почему Spork - отличный инструмент.Он загружает среду рельсов, и охранник может искать изменения, не перезагружая среду рельсов.Но в жемчужине охранника есть ошибка.Это не работает с окнами, потому что это зависит от форка.Даже жесткий spork не использует вилку на windows guard-spork.Fork не поддерживается в системах, отличных от UNIX.

Я исследовал проблему и получил другой подход.Я вывожу логику в папку lib и не включаю файл spec_helper в спецификации.Тогда рельсы не грузятся, только специальная логика тестирования.Это быстро и заставляет меня писать более читаемый код.

Посмотрите это видео на лекции Кори Хэйнс, чтобы узнать больше об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...