2014-11-18 8 views
19

Sto cercando di imparare Rspec. Il mio progetto rubino in Eclipse è il seguente -RSpec NoMethodError: "metodo non definito` descrivi 'per oggetto principale "

enter image description here

Il code-

require 'rspec' 
require './RubyOffRailsTuts/classes/furlong' 

describe Furlong do 
end 

Le PRIVO

risposte
/RubyOffRailsTuts/specs/furlong_spec.rb:6:in `<main>': undefined 
method `describe' for main:Object (NoMethodError) 

Non abbiamo avuto alcun utile on-line. Come posso risolvere questo problema?

risposta

16

Prefix describe con RSpec, ad es. RSpec.describe perché sembra che tu stia utilizzando una versione moderna di RSpec che disabilita le patch delle scimmie.

19

Il problema di fondo è L'oggetto base main non ha un metodo describe a meno che non si dà una, che si riflette dal messaggio di errore "metodo non definito describe per oggetto principale".

Lì per lì, mi viene in mente due modi per risolvere questo:

1) Chiamare RSpec.describe invece di describe

require 'rspec' 
require './RubyOffRailsTuts/classes/furlong' 

RSpec.describe Furlong do 
end 

2) chiamate include RSpec per rendere describe disposizione main

require 'rspec' 
require './RubyOffRailsTuts/classes/furlong' 

include RSpec 

describe Furlong do 
end 
+1

Il problema è andato via quando ho rimosso 'require rspec', ha fatto 'gem install rspec' dopo il cd-ing nella cartella bin di ruby ​​2, aggiungendo queste librerie rspec al mio percorso di build ed eseguendo le specifiche come test e non script . Ho cancellato il progetto di cui sopra qualche tempo fa, ma proverò a ricreare. Grazie per la tua risposta. –

23

Alternativa alla prefazione describe come RSpec.describe, è possibile aggiungere

config.expose_dsl_globally = true 

al vostro spec_helper.rb.

12

Sono d'accordo con sevenseacat che probabilmente utilizzi una versione moderna di RSpec che disabilita le patch per le scimmie.

Questa disabilitazione avviene per impostazione predefinita quando viene creato il file spec_helper.rb quando si fa qualcosa di simile

$ rails generate rspec:install 

In spec_helper.rb, vedrete una sezione che assomiglia a questo:

# Limits the available syntax to the non-monkey patched syntax that is 
# recommended. For more details, see: 
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax 
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ 
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching 
config.disable_monkey_patching! 

È può commentare quell'ultima riga.

Tuttavia, l'approccio consigliato non è quello di utilizzare patch di scimmia e utilizzare RSpec.describe.

Problemi correlati