2012-12-19 1 views
0

Symfony에서 json API에 대한 몇 가지 기능 테스트를 만들고 있습니다.Symfony의 기능 테스트 : 여러 줄에 스팬을 매칭하려면 어떻게해야합니까?

같은 뭔가
{ 
    "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() 

지금이 내가 무엇을 얻을 수 있습니다 :

내 결과를 테스트하기 위해 sfTestFunctional 객체를 사용하여, 나는 다음과 같은 응답 유효성을 검사 할 것

ok 1 - status code is 200 
ok 2 - response content matches regex /result\\: true/" 
not ok 3 - response content matches regex /one.*two/m 

분명히, 나는 잘못된 것을하고 있습니다. 어떤 힌트?

답변

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() 
+0

예입니다! 나는 m을 꺼내야 만했지만 이제는 개머리판과 일치시킬 수 있습니다. @jOk 감사합니다! – mika

+1

따라서 IO는 다음과 일치하는 항목을 찾습니다. matches ('/ one. * two/s') -> – mika