0

我正在为 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

当然,我做错了什么。有什么提示吗?

4

1 回答 1

2

正则表达式失败。

您应该使用包含换行符dotall (PCRE_DOTALL)标志s

如果设置了此修饰符,则模式中的点元字符匹配所有字符,包括换行符。没有它,换行符被排除在外。

所以:

$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()
于 2012-12-19T18:52:46.863 回答