我有一个类和一个这样的方法......
class Player
attr_reader :boardpiece # i exist so game can read me
def initialize(letter)
@boardpiece = letter
end
def move_human(game, board)
@game_two = game
puts "human move..."
human_move = gets.chomp
human_symbol = human_move.to_sym
# look for move as key in board.grid
if board.grid.has_key?(human_symbol)
if board.grid[human_symbol] == " "
#puts "bingo"
@move = human_symbol
else
puts "spot taken...try again"
move_human(@game_two, board)
end
else
puts "invalid move...try again"
move_human(@game_two, board)
end
end
end
我正在尝试在 RSpec 中为它编写一个测试...
require 'game'
require 'board'
describe Player do
describe 'move_human' do
it 'receives cli input' do
player_h = Player.new('X')
player_c = Player.new('O')
board = Board.new
game = Game.new(player_h, player_c, board)
player_h.move_human('X', board).should_receive(:puts).with('human move...')
game.play
end
xit 'and returns a move value'
end
end
我收到此错误作为输出....我做错了什么?
gideon@thefonso ~/Documents/ca_ruby/rubytactoe (development)$ rspec spec
Board
creates a blank board with nine spaces
can set the value of a specified cell
checks if a space is taken or not
drawgrid
draws a blank grid given no input
Player
move_human
human move...
receives cli input (FAILED - 1)
and returns a move value (PENDING: Temporarily disabled with xit)
Pending:
Player move_human and returns a move value
# Temporarily disabled with xit
# ./spec/player_spec.rb:16
Failures:
1) Player move_human receives cli input
Failure/Error: player_h.move_human('X', board).should_receive(:puts).with('human move...')
Errno::EISDIR:
Is a directory - spec
# ./lib/player.rb:21:in `gets'
# ./lib/player.rb:21:in `gets'
# ./lib/player.rb:21:in `move_human'
# ./spec/player_spec.rb:12:in `block (3 levels) in <top (required)>'
Finished in 0.00977 seconds
6 examples, 1 failure, 1 pending
Failed examples:
rspec ./spec/player_spec.rb:6 # Player move_human receives cli input
gideon@thefonso ~/Documents/ca_ruby/rubytactoe (development)$