我正在努力学习 Ruby 中的这个练习 49
该练习要求为提供的每个功能编写一个单元测试。我正在编写的单元测试之一是给我一个错误。
这是我正在测试的代码(word_list 是一个 Pair 结构数组)
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)”。我不确定为什么会发生此错误,上述两个函数也经过了单元测试,并且这些测试结果很好。
@Zabba,我确实将它们完全按照上面练习中的说明进行了放置:
class ParserError < Exception
end
如果有人需要查看我在这里使用的确切文件,请查看要点的链接: https ://gist.github.com/1190148