2016-08-25 1 views
0

seeResponseMatchesJsonType 명령을 사용할 때 문제점이 있습니다.코드 작성 seeResponseMatchesJsonType 명령

나는 vars 이름과 값을 가진 json 문자열을 가지고 있으며 "escrow_status" => "string|null"에 오류가 발생합니다. 변수 $escrow_status이 초기화되지 않았으므로 null이 표시 될 것으로 예상되지만 대신 오류가 발생합니다.

희망, 누군가가이 문제를 해결하는 방법을 알고 있습니다.

답변

0

JsonType은 선택적 필드를 지원하지 않습니다.
필드가 누락 된 경우 JsonType을 사용하여 필드를 확인하지 마십시오.

+0

다음 명령으로 json 문자열에서 데이터 유형을 확인할 수 있습니까? –

+1

이상적으로 당신은 2 개의 분리 된 테스트를 가져야합니다 - 하나는 필드가 있고 하나는 문자열이고 다른 하나는 필드가없는 것입니다. – Naktibalda

0

@Naktibalda가 주석에서 말했듯이, 당신은 그 주장을 두 개로 나눠야합니다. 그것을 할 수있는 여러 가지 방법이 있습니다, 하나는 다음과 같습니다

$I->canSeeResponseIsJson(); 
$data = json_decode($I->grabResponse()); 
$I->assertArrayHasKey('escrow_status', $data); // might need the assert module 

I :

$I->seeResponseJsonMatchesJsonPat('$.escrow'); // you need JSON path module; I would expect seeResponseContainsJson could do it, but it appears that it also needs a value... 
$I->seeResponseMatchesJsonType(["escrow_status" => "string|null"]); 

또 다른 방법은, 응답이 JSON이라고 주장 배열로 변환하고 해당 배열에 주장을하는 것입니다 테스트에서 배우 클래스를 사용한다고 가정합니다 (따라서 $I).