我正在为Symfony中的json api构建一些功能测试。
使用sfTestFunctional
对象测试我的结果,我会尝试验证以下响应:
{
"result": true,
"content": [
"one",
"two"
]
}
有类似的东西:
$browser = new sfTestFunctional(new sfBrowser());
$browser->
get('/hi')->
with('response')->
begin()->
isStatusCode(200)->
matches('/result\"\: true/')->
matches('/one.*two/m')->
end()
现在这就是我得到的:
ok 1 - status code is 200
ok 2 - response content matches regex /result\\: true/"
not ok 3 - response content matches regex /one.*two/m
当然,我做错了什么。任何提示?
答案 0 :(得分:2)
正则表达式失败。
您应该使用包含换行符的flag s
for dotall (PCRE_DOTALL) 。
如果设置了此修饰符,则模式中的点元字符将匹配所有字符,包括换行符。没有它,排除了换行符。
所以:
$browser->
get('/hi')->
with('response')->
begin()->
isStatusCode(200)->
matches('/result\"\: true/')->
matches('/one.*two/sm')->
end()
否则你可以进行两次不同的测试:
$browser->
get('/hi')->
with('response')->
begin()->
isStatusCode(200)->
matches('/result\"\: true/')->
matches('/\"one\"')->
matches('/\"two\"')->
end()