当试图完成about_method koans时,我继续遇到第39行和第39行的“类型不匹配:字符串给定”错误我的第一个问题是错误原因?我的第二个问题是我怎么能用irb自己解决这个问题?
require File.expand_path(File.dirname(__FILE__) + '/neo')
def my_global_method(a,b)
a + b
end
class AboutMethods < Neo::Koan
def test_calling_global_methods_with_wrong_number_of_arguments
exception = assert_raise(ArgumentError) do
my_global_method
end
assert_match(/__/, exception.message)
exception = assert_raise(ArgumentError) do
my_global_method(1,2,3)
end
assert_match(/__/, exception.message)
end
#...
end
一个。如果我将断言更改为
assert_match(/“错误的参数数量(0表示2)”/,exception.message)
导致:
预期“错误的参数数量(0表示2)”匹配/“错误的参数数量(0表示2)”/
B中。如果我将其更改为
assert_match(“错误的参数数量(0表示2)”,exception.message)
导致:
type mismatch:给定字符串
我对两个assert_match行都得到了相同的结果。
答案 0 :(得分:6)
assert_match(/wrong number of arguments \(0 for 2\)/, exception.message)
没有双引号和转义括号。
答案 1 :(得分:2)
/["wrong number of arguments (0 for 2)"]/
为我工作
答案 2 :(得分:0)
第一个失败是因为括号是正则表达式中的特殊字符,所以你需要用反斜杠转义它们。您还在正则表达式中有引号,该引号不存在于字符串中。第二个失败可能是因为assert_match
期望正则表达式作为第一个参数。
至于使用irb调试这些问题,您可以使用irb查看实际字符串是否与您提供的正则表达式匹配,如下所示:
2.0.0p247 :001 > /"wrong number of arguments (0 for 2)"/ =~ "wrong number of arguments (0 for 2)"
=> nil
然后,您可以向左和向右缩小,直到它们匹配,然后添加回字符,直到您找到问题字符。
我不确定irb如何帮助解决第二个问题。