Я работаю над этим Упражнением 49 в Изучите Руби на Сложном Пути
В упражнении предлагается написать модульный тест для каждой предоставленной функции. Один из написанных мной модульных тестов дает мне ошибку.
Вот код, который я тестирую (word_list - массив парных структур)
Pair = Struct.new(:token, :word)
def peek(word_list)
begin
word_list.first.token
rescue
nil
end
end
def match(word_list, expecting)
begin
word = word_list.shift
if word.token == expecting
word
else
nil
end
rescue
nil
end
end
def skip(word_list, token)
while peek(word_list) == token
match(word_list, token)
end
end
Вот тест:
def test_skip
small_list = [Pair.new(:verb, 'go'), Pair.new(:verb, 'do')]
skip(small_list, :verb)
assert_equal([],small_list)
end
Вот ошибка, которую я получаю при запуске модульного теста:
1) Error:
test_skip(SentenceTests):
TypeError: backtrace must be Array of String
test_sentence.rb:23:in `test_skip'
В этом случае строка 23 ссылается на «skip (small_list,: verb)». Я не уверен, почему происходит эта ошибка, две вышеупомянутые функции также были протестированы модульно, и эти тесты прошли хорошо.
@ Забба, я поставил их точно так, как указано в упражнении выше:
class ParserError < Exception
end
Если кому-то нужны точные файлы, которые я здесь использую, это ссылка на суть:
https://gist.github.com/1190148