2012-01-11 16 views
11

RSpec 2.8でこの簡単なテストを行うのに問題があります。RSpecテストArgumentError(パラメータ付きメソッドで)

引数を必要とするメソッド(ArgumentError:引数の数が正しくない( 'x'が 'y'))にパラメータがないことを簡単なテストで書きたいと考えています。

は私のテストはとても似宝石モジュールメソッドをテストしている:

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 

私の宝石モジュールのコードは次のようになります。

module Geolocater 
    def ip_lookup(ip_address) 
    return ip_address 
    end 
end 

私の仕様では、この出力で実行されます。

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

私はここで何が欠けていますか?

答えて

23

あなたが定期的に引数、#expectにブロックを渡す必要はありません。

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

ありがとう!これは素晴らしい仕事でした! – thoughtpunch

+0

ありがとう!まだまだ2013年にはうまくいきます。 –

+0

また、2014;) – macsig