【发布时间】:2017-03-03 23:38:27
【问题描述】:
我的代码有问题,似乎无法弄清楚我需要更改什么。这是我的三个文件,底部是我得到的错误。
require './PokerHand'
require "./Constants"
require 'minitest/autorun'
class TestClass < MiniTest::Test
include Constants
def test_1
arr1 = [Card.new(2, "S"), Card.new(3, "S"),
Card.new(4, "S"), Card.new(5, "S"),
Card.new(6, "S")]
ph1 = PokerHand.new(arr1)
ph1.classify
assert_equal STRAIGHT_FLUSH, ph1.hand_type
end
def test_2
arr2 = [Card.new(9, "C"), Card.new(9, "S"),
Card.new(9, "H"), Card.new(9, "D"),
Card.new(11, "S")]
ph2 = PokerHand.new(arr2)
ph2.classify
assert_equal FOUR_OF_A_KIND, ph2.hand_type
end
def test_3
arr3 = [Card.new(4, "C"), Card.new(9, "S"),
Card.new(9, "H"), Card.new(9, "D"),
Card.new(9, "C")]
ph3 = PokerHand.new(arr3)
ph3.classify
assert_equal FOUR_OF_A_KIND, ph3.hand_type
end
新文件 Pokerhand.rb:
require "./Constants"
require "./Card"
require "./Deck"
require "./CardSpaceship"
class PokerHand < Deck
include Constants
attr_reader :hand_type
def initialize(the_cards)
@cards = [ ]
@hand_type = UNCLASSIFIED
for card in the_cards
@cards << card
end
end
# Determine hand type of PokerHand object.
def classify
@cards.sort!
# Straight flush
if @cards[0].rank == @cards[1].rank +1 &&
@cards[1].rank == @cards[2].rank +1 &&
@cards[2].rank == @cards[3].rank +1 &&
@cards[3].rank == @cards[4].rank +1 &&
@cards[0].suit == @cards[1].suit &&
@cards[1].suit == @cards[2].suit &&
@cards[2].suit == @cards[3].suit &&
@cards[3].suit == @cards[4].suit
@hand_type = STRAIGHT_FLUSH
end
end
新文件 test2.rb:
require './PokerHand'
require "./Constants"
require 'minitest/autorun'
class TestClass < MiniTest::Test
include Constants
def test_1
arr1 = [Card.new(2, "S"), Card.new(3, "S"),
Card.new(4, "S"), Card.new(5, "S"),
Card.new(6, "S")]
ph1 = PokerHand.new(arr1)
ph1.classify
assert_equal STRAIGHT_FLUSH, ph1.hand_type
end
出现错误:
TestClass#test_1:
PokerHand.rb:145: warning: else without rescue is useless
C:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': JulianHansen_P5/PokerHand.rb:30: syntax error, unexpected tINTEGER, expecting keyword_then or ';' or '\n' (SyntaxError)
if @cards[0].rank == @cards[1].rank +1 &&
^
PokerHand.rb:31: syntax error, unexpected tINTEGER, expecting keyword_end
@cards[1].rank == @cards[2].rank +1 &&
【问题讨论】:
-
你需要一个空格:
@cards[1].rank + 1错误也是语法错误,而不是“else without rescue”(我看不到任何elses,但看看stackoverflow.com/questions/21817655/…)。
标签: ruby unit-testing error-handling