Weiß jemand, wie man das umgeht? Versuchen Sie unter OSX, RSpec mit Rails 3.0.7 zum Laufen zu bringen. Ausführliche Informationen unter: https://gist.github.com/1017044
it "renders buttons_widgets partial" do
get :buttons_widgets
response.should render_template("buttons_widgets")
end
→ rspec tools_model_spec.rb
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/version.rb:4: warning: already initialized constant STRING
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/metadata.rb:48: warning: already initialized constant RESERVED_KEYS
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/pending.rb:6: warning: already initialized constant DEFAULT_MESSAGE
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/world.rb:6: warning: already initialized constant PROC_HEX_NUMBER
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/world.rb:7: warning: already initialized constant PROJECT_DIR
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/configuration.rb:43: warning: already initialized constant CONDITIONAL_FILTERS
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/configuration.rb:48: warning: already initialized constant DEFAULT_BACKTRACE_PATTERNS
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core/runner.rb:13: warning: already initialized constant AT_EXIT_HOOK_BACKTRACE_LINE
/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/bundler/gems/rspec-core-bea2366c817e/lib/rspec/core.rb:35: warning: already initialized constant SharedContext
Run filtered excluding {:if=>#<Proc:/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:43>, :unless=>#<Proc:/Users/mm/.rvm/gems/ruby-1.9.2-p0@evergreen/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:44>}
F
Failures:
1) ToolsController renders buttons_widgets partial
Failure/Error: get :buttons_widgets
NoMethodError:
undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1:0x00000106db51f8>
# ./tools_model_spec.rb:7:in `block (2 levels) in <top (required)>'
ruby-on-rails
rspec
99 Meilen
quelle
quelle
buttons_widgets
Aktion in der Steuerung?Antworten:
RSpec weiß nicht, dass Ihre Spezifikation eine Controller-Spezifikation ist, daher haben Ihre Beispiele keinen Zugriff auf eine
get
Methode.RSpec 2.x geht davon aus, dass alles im Controller-Verzeichnis eine Controller-Spezifikation ist.
Dies wurde in RSpec 3 geändert:
RSpec.configure do |config| config.infer_spec_type_from_file_location! end
https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#file-type-inference-disabled
In der rspec-Rails README :
Ein Beispiel für das Festlegen der Controller-Kontext-Metadaten für RSpec:
describe ToolsController, :type => :controller do # ... end
quelle
Wenn Sie überhaupt 'spec / features' verwenden, müssen Sie möglicherweise Folgendes zu Ihrer 'spec_helper.rb' hinzufügen.
config.include RSpec::Rails::RequestExampleGroup, type: :feature
quelle
In Rspec 3.x wird der Spezifikationstyp nicht automatisch aus einem Dateispeicherort abgeleitet, und Sie müssen ihn manuell festlegen. Fügen Sie ihn der Datei spec_helper.rb hinzu
RSpec.configure do |config| config.infer_spec_type_from_file_location! end
Rspec-Upgrade
quelle
require 'rails_helper'
oben in jeder Spezifikationsdatei befinden.require 'rails_helper'
- nichtrequire 'spec_helper'
Ich konnte dieses Problem in meiner App beheben, indem ich
require 'rspec/rails'
es meiner spec_helper-Datei hinzufügte .quelle
Für andere, die sich damit befassen. Ich habe versucht, einen
undefined method 'get'
Fehler aufzuspüren . Mein Problem war, dass ich dasget
in einem hatte,describe block
um sicherzustellen, dass Ihrget
in einem istit block
.quelle
Gelöst durch Ersetzen der Zeile
describe PagesController do
durchRSpec.describe PagesController, :type => :controller do
in der Datei _spec.rb im Ordner spec.
Auch um Verfallswarnungen zu vermeiden, verwenden Sie
expect(response).to be_success
stattresponse should be_success
.PS: Musste nicht hinzufügen
require "rails_helper"
.quelle
Ich habe diesen Fehler erhalten, als ich vergessen habe
require 'spec_helper'
, oben in meine Spezifikationsdatei oder--require spec_helper
in meine .rspec-Datei einzufügen.quelle
Dies kann unter folgenden Bedingungen geschehen:
Ihre Spezifikation hat nicht
:type => :controller
[type: :controller
in neuerem Ruby]Ihre Spezifikation befindet sich nicht im Controller-Ordner oder Sie haben nicht festgelegt
config.infer_spec_type_from_file_location!
Entweder Nr. 1 oder Nr. 2 muss für Ihre Spezifikation eingerichtet werden. Dies kann auch unter dieser Bedingung geschehen:
require 'spec_helper'
anstatt im neueren geschriebenrequire 'rails_helper'
. Sie werden feststellen, dass diesrails_helper
jetzt beinhaltetspec_helper
(um beide zu generieren, lesen Sie die Rspec-Installationsschritte ).Querverweis auf GH-Problem https://github.com/rails/rails-controller-testing/issues/36
quelle
Wenn Sie
rspec
die.rspec
Datei generiert haben , sollten Sie den Inhalt ändern von:--require spec_helper
zu:
--require rails_helper
quelle
Eine Alternative besteht darin,
type: :request
für Ihre Spezifikation anzugeben . Zum Beispiel:RSpec.describe "Widget management", :type => :request do it "creates a Widget and redirects to the Widget's page" do get "/widgets/new" expect(response).to render_template(:new) post "/widgets", :widget => {:name => "My Widget"} expect(response).to redirect_to(assigns(:widget)) follow_redirect! expect(response).to render_template(:show) expect(response.body).to include("Widget was successfully created.") end end
Beispiel von hier https://www.relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec .
quelle
Ich hatte dieses Problem, als ich hinzufügte
gem 'rspec'
zu meinem Gemfile im Rails-Projekt. Es sollte sein
gem 'rspec' gem 'rspec-rails'
(oder einfach nur rspec-schienen). Nach
Erstellen Sie das Spezifikationsverzeichnis mit neu
und legen Sie Ihre xxx_spec.rb-Datei im entsprechenden Verzeichnis ab (funktioniert nicht, wenn sie sich im Spezifikationsverzeichnis befindet). Anfängerfehler, aber vielleicht hilft das jemandem;) Hier ist der Link, der mir geholfen hat:
https://www.relishapp.com/rspec/rspec-rails/docs/gettingstarted
quelle
Für Zugriffsanforderungen zum Abrufen, Veröffentlichen, Patchen und Löschen können Sie sowohl
request
als auchcontroller
in verwenden:type
Ich bevorzuge
:request
Typ für API Rspec und einfach:controller
für Controller RspecHier für Anfrage,
RSpec.describe ToolsController, type: 'request' do it "renders buttons_widgets partial" do get :buttons_widgets response.should render_template("buttons_widgets") end end
quelle