2012-07-06 3 views
5

Confuso sul motivo per cui questo metodo RSpec non funziona. Stavo guardando la risposta qui: How to use RSpec's should_raise with any kind of exception? e ho provato tutte le combinazioni proposte, ma per qualche motivo, sto ancora ricevendo un NoMethodError.Seguendo la gestione delle eccezioni di rspec, ottenendo "NoMethodError" per "expect"

Ecco l'eccezione

Exception encountered: #<NoMethodError: undefined method `expect' for #<Class:0x007fa5bd8e4120>> 

Ecco il metodo:

describe "admin should not be accesible" do 
expect { User.new(name: "Example Name", email: "[email protected]", password: "foobar", password_confirmation: "foobar", admin: "true") }.should raise_error(ActiveModel::MassAssignmentSecurity::Error) 
end 

ho ottenuto questo errore in precedenza quindi so che il mio metodo sta facendo quello che voglio fare:

1) User admin should not be accesible 
Failure/Error: hey = User.new(name: "Hello", email: "[email protected]", password: "foobar", password_confirmation: "foobar", admin: "true") 
ActiveModel::MassAssignmentSecurity::Error: 
    Can't mass-assign protected attributes: admin 

Sono in esecuzione:

RSpec 2.1.0 su Rails 3 con guard-spork 0.3.2 e spork 0.9.0

risposta

13

questo è un classico! ti manca il blocco it!

describe "admin should not be accesible" do 
    it "should bla" do 
    expect { User.new(name: "Example Name", email: "[email protected]", password: "foobar", password_confirmation: "foobar", admin: "true") }.should raise_error(ActiveModel::MassAssignmentSecurity::Error) 
    end 
end 
+6

In questo esempio, 'expect {} .should' è stato deprecato, utilizzare' expect {} .to' –