2012-01-11 23 views
11

Ho riscontrato problemi nel trasmettere questo semplice test su RSpec 2.8.Test RSpec ArgumentError sul metodo con parametri

Voglio scrivere un semplice test per l'assenza di parametri su un metodo che li richiede (ad esempio ArgumentError: numero errato di argomenti ('x' per 'y')).

La mia prova sta sperimentando un metodo di modulo gemma in questo modo:

describe "#ip_lookup" do 
    it "should raise an ArgumentError error if no parameters passed" do 
    expect(@geolocater.ip_lookup).to raise_error(ArgumentError) 
    end 
end 

mio gioiello codice del modulo è simile al seguente:

module Geolocater 
    def ip_lookup(ip_address) 
    return ip_address 
    end 
end 

mia spec corre con questa uscita.

Failure/Error: expect(@geolocater.ip_lookup).to raise_error(ArgumentError) 
    ArgumentError: 
     wrong number of arguments (0 for 1) 
    # ./lib/geolocater.rb:4:in `ip_lookup' 
    # ./spec/geolocater_spec.rb:28:in `block (3 levels) in <top (required)>' 

Cosa mi manca qui?

risposta

23

È necessario passare un blocco di #expect, non un argomento regolare:

describe "#ip_lookup" do 
    it "should raise an ArgumentError error if no parameters passed" do 
    expect { @geolocater.ip_lookup }.to raise_error(ArgumentError) 
    end 
end 
+0

Grazie! Questo ha funzionato alla grande! – thoughtpunch

+0

Grazie! funziona ancora alla grande nel 2013. –

+0

Anche nel 2014;) – macsig