2015-01-18 11 views
6

Im a Michael Hartl's RoR Tutorial Capitolo 8 e ho avuto un problema. Il test fallisce a causa del "suo" metodo per RSpec è "indefinito". Hai incontrato qualcosa di simile? quale potrebbe essere una ragione? Ho controllato tutto e è lo stesso come nel libro ...metodo non definito `its 'per RSpec (Hartl's Ruby on Rails Tutorial)

Ecco il mio codice di prova da user_spec.rb:

describe User do 

before { @user = User.new(name: "Example User", email: "[email protected]", 
       password: "foobar", password_confirmation: "foobar") } 

subject { @user } 

describe "remember token" do 
before { @user.save } 
its(:remember_token) { should_not be_blank } 
end 
... 
... 

frutto di prove in esecuzione, si dice: metodo non definito `sua per RSpec :: :: ExampleGroups utente :: RememberToken: Class (NoMethodError):

MBP:sample_app smi$ bundle exec rspec spec 
/Users/smi/projects/sample_app/spec/models/user_spec.rb:12:in `block (2 levels) in <top (required)>': **undefined method `its' for RSpec::ExampleGroups::User::RememberToken:Class (NoMethodError)** 
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec' 
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `subclass' 
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:219:in `block in define_example_group_method' 
from /Users/smi/projects/sample_app/spec/models/user_spec.rb:10:in `block in <top (required)>' 
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec' 
from /Users/smi/.rvm/g................. 

risposta

8

Si scrive il seguito come:

its(:remember_token) { should_not be_blank } 

come

expect(subject.remember_token).not_to be_blank 

its isn't core to RSpec Leggi e Arguments passed to its discussioni. Dato che stai utilizzando Rspec> = 3.0, hai ricevuto l'errore. Perché in questa versione o superiore its non è la parte del core di Rspec.

È possibile controllare l'attuale One-liner syntax di Rspec.

1

È necessario installare gem 'rspec-its' - fornisce il suo metodo come una scorciatoia per specificare il valore previsto di un attributo.

Problemi correlati