ruby - rspec - как сравнить с хешем? Синтаксическая ошибка, неожиданная => - PullRequest
0 голосов
/ 26 мая 2019

Кажется, мой хэш в порядке, почему я получаю синтаксические ошибки?

Получение

SyntaxError:
  .../x_and_o_spec.rb:14: syntax error, unexpected =>, expecting '}'
      expect(board).to eq {0 =>"-", 1 =>"-",  2 =>"-",  3 =>"
                               ^
  .../x_and_o_spec.rb:14: syntax error, unexpected ',', expecting keyword_end
   expect(board).to eq {0 =>"-", 1 =>"-",  2 =>"-",  3 =>"-", 
                                ^
  .../x_and_o_spec.rb:14: syntax error, unexpected ',', expecting end-of-input
  oard).to eq {0 =>"-", 1 =>"-",  2 =>"-",  3 =>"-",  4 =>"-",

Если я закомментирую свои ожидания и просто напечатаю получаемый хэш:

{0=>"-", 1=>"-", 2=>"-", 3=>"-", 4=>"-", 5=>"-", 6=>"-", 7=>"-", 8=>"-", 9=>"-"}

так почему мои ожидания дают эти сообщения об ошибках?

Код

class Grid
  attr_accessor :board
  def initialize
    @board = {}
    (0..9).each do |key|
      @board[key] = "-" 
    end 
  end 
end

Тест

it 'Grid has 9 elements, each element is a value of nil, o or X' do
  board = Grid.new.board
  expect(board).to eq {0 =>"-", 1 =>"-",  2 =>"-",  3 =>"-",  4 =>"-",  5 =>"-",  6 =>"-",  7 =>"-",  8 =>"-",  9 =>"-"}
end 

1 Ответ

3 голосов
/ 26 мая 2019

Незнание программиста (me) относительно правил синтаксического анализа, если ожидаемый хеш-код.
и неосознание проблемы хеширования / блока с использованием {} s

Помещение паренов вокруг него решило эту проблему!

 expect(board).to eq    ({0 =>"-", 1 =>"-",  ...  9 =>"-"})
 # added these parens: /\                                /\
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...