当我的一个变量大于13或小于1时,我试图引发2个异常 如果卡的类型不是已定义的类型,我也想提出异常。 这是我的代码:
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
结果如下:
你可以帮忙吗?故障:
1)卡片应检查卡号是否在1到13之间 失败/错误:期待{Card.new(Suit :: CLUB,14)}。to raise_error(“CardNumberNotValid”) 预期的“CardNumberNotValid”异常,得到错误的'':FalseClass> #。/ card_spec.rb:8
以0.00064秒结束1例,1例失败
失败的例子:
rspec ./card_spec.rb:7#卡应检查卡号是否介于1之间 和13
答案 0 :(得分:1)
1>number>13
在Ruby中不起作用。使用类似的东西:
number.between?(1, 13)
答案 1 :(得分:0)
如果你在没有类型的ruby中引发错误:
raise "My pink pig"
ruby将使用“My pink pig”作为消息引发RuntimeError(假设您尚未处理错误,在这种情况下,新错误将具有相同的类型)。
您可能应该以不同的方式预期错误:
expect{Card.new(Suit::CLUB,14)}.to raise_error(RuntimeError, "CardNumberNotValid")