我正在比较存储在数据库中的预期值的数据类型值与实际响应。我使用下面的代码验证值。我在比较时得到未定义的“string_between_markers”方法错误。我知道在expected_value字符串中没有预定义的方法可用。如何调用string_between_markers进行比较正则表达式。在DB模式中,正则表达式的值低于Pattern_Regex _ [^([0-9] {1,3})。([0-9] {1,3})。([0-9] {1,3})。( [0-9] {1,3})]
def validate_value? (actual_value)
if expected_value.include? "Pattern_Regex"
# get the regex from []
regex = expected_value.string_between_markers("[","]")
if expected_value.match(regex)
result = "Passed"
end
end
#String Between Method
def string_between_markers marker1, marker2
self[/#{Regexp.escape(marker1)}(.*?)#{Regexp.escape(marker2)}/m, 1]
end
end
问题是你在String
上调用了一个未正确定义的方法。有两种方法。
第一解决方案
def string_between_markers(input, marker1, marker2)
input[/#{Regexp.escape(marker1)}(.*)#{Regexp.escape(marker2)}/m, 1]
end
然后像这样调用它:
string_between_markers(expected_value, "[","]")
二解决方案
使用以下代码创建lib/ext/string.rb
之类的文件:
class String
def string_between_markers(marker1, marker2)
self[/#{Regexp.escape(marker1)}(.*)#{Regexp.escape(marker2)}/m, 1]
end
end
然后,在您的代码中,您必须通过调用require 'ext/string'
或将lib
文件夹添加到自动加载路径来要求此文件。
之后,您将像以前一样调用该方法:
expected_value.string_between_markers("[","]")