Получение Rspec + автотест, работающий на Windows - PullRequest
5 голосов
/ 04 октября 2010

Я установил рычаг + rspec + автотест на моем компьютере с Windows 7.Из командной строки, когда я набираю 'rspec spec /', это не работает.Тесты будут запускаться, только если я использую 'rake spec /' + 'autotest'.

Кроме того, я запускаю эти тесты: http://railstutorial.org/chapters/static-pages#code:default_pages_controller_spec (то есть очень, очень тривиально), и они берут 8.11секунд.

Они также терпят неудачу, когда я запускаю их - даже если они не в примере.Я сделал все, что рассказал мне учебник, проблема в том, что учебник не слишком углубляется в установку rspec на машине с Windows.Он дает ссылку, но даже тогда вы должны собрать воедино инструкции.

Я получаю следующие ошибки: 'Failure/Error: Unable to find C to read failed line [31mundefined methord get' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x48336c0>'

Вторая ошибка очень похожа на эту.

Я также правильно установил Growl, потому что получаю уведомление о двух сбоях.

Кто-нибудь может мне помочь?

Ответы [ 3 ]

2 голосов
/ 13 января 2011

Я немного погуглил, и согласно этой теме на форуме rspec ruby ​​ и эта закрытая проблема rspec-rails , это проблема с rspec-rails, которая была неподвижная.

Я использую Ruby 1.9.2p136 в Windows 7 с использованием rails 3.0.3.

Вот так выглядел мой Gemfile, который показывает версии rspec и rspec-rails, которые я использовал:

source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'

group :development do
  gem 'rspec-rails', '2.4.1'
end

group :test do
  gem 'rspec', '2.4.0'
  gem 'webrat', '0.7.1'
end

Я говорю «похоже», потому что когда я пытался запустить генератор рельсов rspec, я получил следующее:

C:\Ruby\sample_app>rails generate rspec:install
  create  .rspec
  create  spec
  create  spec/spec_helper.rb
Could not find "autotest" in any of your source paths. Your current source paths
 are:
C:/Ruby/sample_app/lib/templates/rspec/install
C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/rspec-rails-2.3.0/lib/generators/rspec/install/templates

Итак, я добавил автотест в свой Gemfile (и снова установил пакет), затем попытался rails generate rspec: установить снова, и он работал без ошибок. Вот как теперь выглядит мой Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'

group :development do
  gem 'autotest'
  gem 'rspec-rails', '2.4.1'
end

group :test do
  gem 'rspec', '2.4.0'
  gem 'webrat', '0.7.1'
end

И эта версия автотеста, которую он устанавливает, - 4.4.6:

C:\Ruby\sample_app>bundle show autotest
C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/autotest-4.4.6

Затем я создал контроллер, как указано в руководстве:

$ rails generate controller Pages home contact

И я смог запустить и "bundle exec autotest", и "rspec spec /", не получив сообщение об ошибке:

C:\Ruby\sample_app>bundle exec autotest
loading autotest/rspec2
bundle exec C:\Ruby\192-stackoverflow\bin\ruby -S C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/rspec-core-2.4.0/bin/rspec --tty 'C:/Ruby/sample_app/spec/controllers/pages_controller_spec.rb'
..

Finished in 23.04 seconds
2 examples, 0 failures
# I killed autotest with CTRL-c at this point
Interrupt a second time to quit
Terminate batch job (Y/N)? y
Terminate batch job (Y/N)? y


C:\Ruby\sample_app>rspec spec/
..

Finished in 23.11 seconds
2 examples, 0 failures

Я также продолжил учебник по написанию спецификаций для страницы «О программе», пока проводился автотест, и он выполнял мои изменения без проблем.

Пожалуйста, попробуйте:

  1. Обновление вашего Gemspec, чтобы оно выглядело как мой второй, опубликованный здесь
  2. Запуск комплекта установки
  3. Запуск 'bundle exec autotest'

и дайте мне знать, если это работает. Я буду проверять обратно!

2 голосов
/ 27 июля 2012

Я подумал, что это может помочь тем, у кого могут возникнуть проблемы, теперь, когда все гемы были обновлены совсем немного (особенно для тех, кто использует учебник по Ruby on Rails 3):

Я смог получить эторабота с использованием последних версий всех драгоценных камней:

Мой Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.6'
gem 'jquery-rails'

gem 'sqlite3', :group => [:development, :test]
gem 'pg', :group => :production #This is so Heroku will work

group :development do
  gem 'rspec-rails'
end

group :test do
  gem 'rspec'
  gem 'webrat'
  gem 'spork-rails'  #Use this is only if you want to use spork
end

Убедитесь, что вы очистили rspec, если у вас уже есть более старая версия (с помощью Ruby on Rails 3учебное пособие, например): https://stackoverflow.com/a/4433217/911133

Чтобы использовать автотест, следуйте приведенным ниже инструкциям: https://github.com/svoop/autotest-growl

Обратите внимание, что установка рычагов для окон является частью этой сделки, и спутывание составляет не необходимо: http://www.growlforwindows.com/

Ваш файл .autotest может находиться в одном из двух мест

1) вашего каталога HOME, который (пример):

C:\users\joeblow\.autotest

2) корень приложения rails (это будет работать только для этого приложения)

мой файл .autotest выглядит следующим образом:

require 'autotest/growl'
require 'autotest/restart'
require 'autotest/timestamp'

Autotest.add_hook :initialize do |autotest|
  autotest.add_mapping(%r%^spec/(requrests)/.*rb$%) do
|filename, _|
filename
end
end

Autotest::Growl::clear_terminal = false

Убедитесь, что вы сделали'bundle install'

Затем запустите Growl для Windows (меню «Пуск» или запуск на Windows Boot)

запустите автотест в командной строке, и вы должны быть в порядке!

c:\users\joeblow\workspace\Rails\MyRailsProject> autotest
1 голос
/ 04 октября 2010

Я еще не нашел постоянного исправления, которое работает, но, очевидно, оно сводится к проблеме пути - что-то портит путь Windows, и оно ломается. Тем не менее, есть обходной путь:

В вашем описании перед вызовом get введите:

включает RSpec :: Rails :: ControllerExampleGroup

Вот пример кода с использованием сгенерированной спецификации Rails для контроллера. Обратите внимание, что это в начале области:

require 'spec_helper'

describe PagesController do
  include RSpec::Rails::ControllerExampleGroup

  describe "GET 'home'" do
    it "should be successful" do
      get 'home'
      response.should be_success
    end
  end

  describe "GET 'contact'" do
    it "should be successful" do
      get 'contact'
      response.should be_success
    end
  end

end

Я видел исправление, в котором предлагается изменить spec_helper (в случае Rails), но я не смог заставить его работать.

РЕДАКТИРОВАТЬ: немного больше исследований показывают, что это проблема с autospec - этот обходной путь будет работать, если вы просто используете rspec, но не будет работать с autotest. Однако я не смог найти решение для этого.

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