使用 assert_match 验证多个字符串是否符合要求的顺序
verifying that multiple strings are in required order with assert_match
如何使用 assert_match
验证字符串的顺序
assert_match /string_1.*string_2.*string_3/, page.html
即使 string_1
、string_2
和 string_3
在页面中以相同的顺序出现也是如此。
我刚刚尝试了以下...
查看:
string_1string_2string_3
测试:
assert_match /string_1.*string_2.*string_3/, page.html
这就过去了。
我不确定您遇到了什么问题。当然,除非 string_1
等是变量名,而不是您要搜索的字面意思。那么测试代码应该使用插值:
# Example variables with string values
string_1 = "alpha"
string_2 = "beta"
string_3 = "charlie"
# Using the variables in the regex via interpolation
assert_match /#{string_1}.*#{string_2}.*#{string_3}/, page.html
问题可能是"string_1"、"string_2"和"string_3"在不同的线路上。
在正则表达式中,点 (.
) 匹配除换行符之外的任何单个字符。如果三个字符串在同一行(即中间没有换行符),您将看到匹配有效:
html = '<div>string_1</div><div>string_2</div><div>string_3</div>'
p html.match(/string_1.*string_2.*string_3/)
#=> #<MatchData "string_1</div><div>string_2</div><div>string_3">
但是,如果字符串被分成多行(即中间有换行符),则不会匹配:
html = '<div>string_1</div>
<div>string_2</div>
<div>string_3</div>'
p html.match(/string_1.*string_2.*string_3/)
#=> nil
为了点也匹配换行符,通过在末尾添加 m
启用多行选项:
html = '<div>string_1</div>
<div>string_2</div>
<div>string_3</div>'
p html.match(/string_1.*string_2.*string_3/m)
#=> #<MatchData "string_1</div>\n\t<div>string_2</div>\n\t<div>string_3">
换句话说,断言可能需要使用多行选项:
assert_match /string_1.*string_2.*string_3/m, page.html
如何使用 assert_match
验证字符串的顺序assert_match /string_1.*string_2.*string_3/, page.html
即使 string_1
、string_2
和 string_3
在页面中以相同的顺序出现也是如此。
我刚刚尝试了以下...
查看:
string_1string_2string_3
测试:
assert_match /string_1.*string_2.*string_3/, page.html
这就过去了。
我不确定您遇到了什么问题。当然,除非 string_1
等是变量名,而不是您要搜索的字面意思。那么测试代码应该使用插值:
# Example variables with string values
string_1 = "alpha"
string_2 = "beta"
string_3 = "charlie"
# Using the variables in the regex via interpolation
assert_match /#{string_1}.*#{string_2}.*#{string_3}/, page.html
问题可能是"string_1"、"string_2"和"string_3"在不同的线路上。
在正则表达式中,点 (.
) 匹配除换行符之外的任何单个字符。如果三个字符串在同一行(即中间没有换行符),您将看到匹配有效:
html = '<div>string_1</div><div>string_2</div><div>string_3</div>'
p html.match(/string_1.*string_2.*string_3/)
#=> #<MatchData "string_1</div><div>string_2</div><div>string_3">
但是,如果字符串被分成多行(即中间有换行符),则不会匹配:
html = '<div>string_1</div>
<div>string_2</div>
<div>string_3</div>'
p html.match(/string_1.*string_2.*string_3/)
#=> nil
为了点也匹配换行符,通过在末尾添加 m
启用多行选项:
html = '<div>string_1</div>
<div>string_2</div>
<div>string_3</div>'
p html.match(/string_1.*string_2.*string_3/m)
#=> #<MatchData "string_1</div>\n\t<div>string_2</div>\n\t<div>string_3">
换句话说,断言可能需要使用多行选项:
assert_match /string_1.*string_2.*string_3/m, page.html