Зевс выкидывает ошибки при запуске RSpec
Я сталкиваюсь с ситуацией, которая, кажется, случается со многими пользователями Zeus и RSpec.
Допустим, у меня есть следующая спецификация:
# spec/views/messages/show.html.erb
require 'spec_helper'
describe "messages/show.html.erb" do
it "displays the text attribute of the message" do
render
rendered.should contain("Hello world!")
end
end
и следующий шаблон представления, который он тестирует.
# app/views/messages/show.html.erb
Hello world!
Мой pwd - это корень приложения rails. Когда я бегу rspec
Я получаю следующий ответ:
user@host $ rspec
.
Finished in 0.06264 seconds
1 example, 0 failures
Randomized with seed 9609
Все выглядит хорошо. Если, однако, я запускаю тест с zeus rspec spec
(zeus rspec
не работает вообще) я получаю следующий вывод.
user@host $ zeus rspec spec
.
Finished in 0.07292 seconds
1 example, 0 failures
Randomized with seed 0
F
Failures:
1) messages/show.html.erb displays the text attribute of the message
Failure/Error: render
NameError:
undefined local variable or method `render' for <RSpec::Core::ExampleGroup::Nested_2:0x936a0fc>
# ./spec/views/show.html.erb_spec.rb:5:in `block (2 levels) in <top (required)>'
# -e:1:in `<main>'
Finished in 0.00041 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/views/show.html.erb_spec.rb:4 # messages/show.html.erb displays the text attribute of the message
Я видел несколько вопросов, подобных этому на SO, таких как эти:
Zeus дает сбой при тестировании с Rspec
Zeus rspec не может включить необходимые файлы, но один rspec делает хорошо
Zeus + FactoryGirl:: Синтаксис:: Методы. неопределенный метод `create'
Общая нить заключается в том, что решение предлагает закомментировать / удалить следующие строки из spec_helper.rb, если они существуют.
require 'rspec/autorun'
require 'rspec/autotest'
Моя проблема в том, что эти строки не появляются в моем файле spec_helper.rb или где-либо еще в приложении.
После некоторого раскопок я обнаружил, что оскорбительная строка была на самом деле в rspec
исполняемый скрипт в геме RSpec.
В настоящее время я использую RSpec версии 2.13.1, и содержимое файла выглядит следующим образом:
#!/usr/bin/env ruby
begin
require 'rspec/autorun'
rescue LoadError
$stderr.puts <<-EOS
#{'*'*50}
Could not find 'rspec/autorun'
This may happen if you're using rubygems as your package manager, but it is not
being required through some mechanism before executing the rspec command.
You may need to do one of the following in your shell:
# for bash/zsh
export RUBYOPT=rubygems
# for csh, etc.
set RUBYOPT=rubygems
For background, please see http://gist.github.com/54177.
#{'*'*50}
EOS
exit(1)
end
Из документации RSpec видно, что это удобный метод, который запустит ваши тесты для вас. Как ни странно, когда я закомментирую require 'rspec/autorun'
Секция begin/rescue zeus по-прежнему работает аналогично (выдает ошибку), но rspec больше не функционирует традиционным способом (просто запуск rspec
команда). В соответствии с этой документацией ( https://www.relishapp.com/rspec/rspec-core/docs/command-line) вы все равно можете запустить его, только немного более многословно.
В любом случае, это намекает мне на то, что либо Зевс либо полагается на файл, чем rspec
Сценарий exec или проблема не так явно связаны с инструкциями spec_helper.rb require (которые rspec 2.13.1 не добавляет в конфигурацию).
Кто-нибудь сталкивался с этой ситуацией или шел по этому же пути?
Я не решаюсь поднять проблему с репозиториями rspec-rails / rspec-core или zeus, так как совершенно не уверен, какая библиотека вызывает какие-то проблемы.
Любая помощь будет очень цениться.
1 ответ
В соответствии с этим при просмотре спецификаций вы должны соблюдать соглашение об именах файлов. Попробуйте переименовать:
spec/views/messages/show.html.erb
в
spec/views/messages/show.html.erb_spec.rb
и это может помочь.