2013-06-07 13 views
8

Występuję w sytuacji, która zdaje się przytrafiać wielu użytkownikom Zeusa i RSpeca.Błędy popełniania błędów Zeusa podczas uruchamiania RSpec

Powiedzmy mam następujące specyfikację:

# 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 

i następujący widok szablon że testy.

# app/views/messages/show.html.erb 

Hello world! 

Mój pwd jest źródłem aplikacji szyny. Kiedy uruchamiam rspec mam następującą odpowiedź:

[email protected] $ rspec 
. 

Finished in 0.06264 seconds 
1 example, 0 failures 

Randomized with seed 9609 

Wszystko wygląda dobrze. Jeśli jednak uruchomię test z zeus rspec spec (zeus rspec nie działa w ogóle) otrzymuję następujące wyniki.

[email protected] $ 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 

I widać kilka pytań podobny do tego na celu, takie jak te:

Zeus fails when testing with Rspec

zeus rspec fails include required files, but rspec alone does fine

Zeus + FactoryGirl::Syntax::Methods. undefined method `create'

Wspólne wątku jest to, że rozwiązanie proponuje komentowania out/usuwanie następujących linii z spec_helper.rb, jeśli istnieją.

require 'rspec/autorun' 
require 'rspec/autotest' 

Moim problemem jest to, że te linie nie pojawiają się w moim pliku spec_helper.rb lub gdziekolwiek indziej w aplikacji.

Po pewnym wykopaniu znalazłem nieprawidłową linię w pliku wykonywalnym rspec w klejnocie RSpec.

Obecnie używam rspec wersji 2.13.1 i zawartość pliku jest następująca:

#!/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 

Jak wynika z dokumentacji RSpec, że jest to metoda wygoda, która będzie uruchamiać testy dla ciebie. O dziwo, kiedy komentuję sekcję początkową/ratunkową wciąż ma takie samo zachowanie (wyrzucenie błędu), ale rspec nie działa już w tradycyjny sposób (po prostu uruchamia polecenie rspec). Zgodnie z tą dokumentacją (https://www.relishapp.com/rspec/rspec-core/docs/command-line) nadal możesz ją uruchomić, tylko w nieco bardziej gadatliwy sposób.

W każdym razie, to sugeruje mi, że albo zeus polega na pliku innym niż skrypt wykonawczy rspec, albo problem nie jest tak wyraźnie związany z instrukcjami wymagającymi spec_helper.rb (które rspec 2.13. 1 nie dodaje do konfiguracji).

Czy ktoś do tej sytuacji podszedł lub zszedł tą samą ścieżką?

Jestem niezdecydowany rzucić problem na repozytorium rspec-rails/rspec-core lub zeus, ponieważ nie jestem wcale pewien, która biblioteka powoduje problemy, dla których.

Każda pomoc w ogóle byłaby niezwykle cenna.

+0

Miałem podobny problem, gdy uruchomienie określonej specyfikacji helpera zakończyłoby się niepowodzeniem tylko pod zeusem, i tylko podczas uruchamiania tego pliku spec (nie wszystkie specyfikacje pomocnicze). Błąd polegał na tym, że helper nie mógł znaleźć metody zdefiniowanej w ApplicationHelper. W końcu puntowałem i dodałem "require 'application_helper" "na górze specyfikacji helpera, która wydaje się, że to naprawiła. Miałem ten sam problem ze sporkami jak zeus, więc nie wierzę, że to specyficzny zeus. – sockmonk

Odpowiedz

1

Zgodnie z this należy przestrzegać konwencji nazewnictwa plików specs podczas wykonywania specyfikacji widoku. Spróbuj zmienić nazwę:

spec/views/messages/show.html.erb 

do

spec/views/messages/show.html.erb_spec.rb 

i to może pomóc.

Powiązane problemy