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.
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