2012-02-09 7 views
0

私の変数のうちの1つが13より大きいか1より小さい場合に例外を発生させようとしている カードの型が1でない場合、例外を発生させたい定義されたもの。 これは私のコードです:Rubyで正しい例外が発生しない

require "../lib/suit" 
class Card 
    attr_reader :suit,:number 
def initialize(suit,number) 
    raise "CardNumberNotValid" if 1>number>13 
    raise "SuitNotValid" if suit!=Suit::CLUB or suit!=Suit::HEART or suit!=Suit::DIAMOND or suit!=Suit::SPADE 
    @suit=suit 
    @number=number 
end 
end 

、これは私のテストで:

require "rspec" 
require "../lib/suit" 
require "../lib/card" 

describe Card do 

    it "should check if card number is between 1 and 13" do 
    expect{Card.new(Suit::CLUB,14)}.to raise_error("CardNumberNotValid") 
    end 
end 

結果は以下の通りです:

Failures:

1) Card should check if card number is between 1 and 13 Failure/Error: expect{Card.new(Suit::CLUB,14)}.to raise_error("CardNumberNotValid") expected Exception with "CardNumberNotValid", got #' for false:FalseClass> # ./card_spec.rb:8

Finished in 0.00064 seconds 1 example, 1 failure

Failed examples:

rspec ./card_spec.rb:7 # Card should check if card number is between 1 and 13

あなたが助けてくださいすることができますか?

答えて

1
1>number>13 

は、Rubyでは動作しません。以下のようなものを使用します

number.between?(1, 13) 
+0

おかげで、私はルビーに新たなんだ:)ことに気付きませんでした –

0

あなたがタイプなしルビーでエラーが発生した場合:

raise "My pink pig" 

ルビーは(すでにエラーを処理していないと仮定してのメッセージとして「私のピンクの豚」とRuntimeErrorを送出するために起こっています、この場合、新しいエラーは同じタイプになります)。

おそらく違った自分の誤りを期待する必要があります。

expect{Card.new(Suit::CLUB,14)}.to raise_error(RuntimeError, "CardNumberNotValid") 
+0

おかげで、それが動作していない同じエラーが#得た偽のために」:FalseClassの> –

関連する問題