2015-01-18 11 views
6

Ich bin bei Michael Hartl's RoR Tutorial Kapitel 8 und ich habe ein Problem. Der Test schlägt fehl, weil "seine" Methode für RSpec "nicht definiert" ist. Hast du etwas Ähnliches getroffen? Was könnte ein Grund sein? Ich habe alles überprüft und ist das gleiche wie in dem Buch ...undefinierte Methode `its 'für RSpec (Hartls Ruby on Rails Tutorial)

Hier ist mein Testcode aus 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 
... 
... 

das Ergebnis von Tests ausgeführt wird, heißt es: nicht definierte Methode `seine für RSpec :: ExampleGroups :: User :: RememberToken: Klasse (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................. 

Antwort

8

Sie schreiben die unten als:

its(:remember_token) { should_not be_blank } 

als

expect(subject.remember_token).not_to be_blank 

lesen its isn't core to RSpec und Arguments passed to its Diskussionen. Da Sie Rspec> = 3.0 verwenden, haben Sie den Fehler erhalten. Weil in dieser Version oder höher its nicht der Teil von Rspec Kern ist.

Sie können die aktuelle Rspec One-liner syntax überprüfen.

1

Sie müssen installieren gem 'rspec-its' - es bietet die Methode als eine Abkürzung, um den erwarteten Wert eines Attributs anzugeben.

Verwandte Themen