Зевс выкидывает ошибки при запуске 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

и это может помочь.

Другие вопросы по тегам