2012-01-11 12 views
11

Tengo problemas para hacer que esta simple prueba pase RSpec 2.8.Prueba RSpec ArgumentError en el método con los parámetros

Quiero escribir una prueba simple para la ausencia de parámetros en un método que los requiera (es decir, ArgumentError: número incorrecto de argumentos ('x' para 'y')).

Mi prueba está probando un método del módulo de la gema de este 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 

Mi joya código del módulo es el siguiente:

module Geolocater 
    def ip_lookup(ip_address) 
    return ip_address 
    end 
end 

mi especificación se ejecuta con esta salida.

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)>' 

¿Qué es lo que falta aquí?

Respuesta

23

lo necesario para pasar de un bloque a #expect, no es un argumento habitual:

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

Gracias! Esto funcionó muy bien! – thoughtpunch

+0

¡Gracias! todavía funciona muy bien en 2013. –

+0

También en 2014;) – macsig

Cuestiones relacionadas