0

基本的に同じパターンの REST API にヒットする受け入れテストがいくつかあります。

<?php
$I = new WebGuy($scenario);
$I->wantTo('Do something');
$I->haveHttpHeader('Accept', 'application/hal+json');
$I->sendGET('contact/1/website');
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson(array(...

私のテストのいくつかの問題は、seeResponseContainsJson で発生します。JSON 応答が与えられた場合:

{
    _links: {
        self: {
            href: "http://myurl/api/v1/contact/1/website"
        }
        describedBy: {
            href: "http://myurl/api/v1/documentation/collection"
        }
    }
    _embedded: {
        items: [1]
            0:  {
                id: 1
                label: "Personal Site"
                url: "http://someurl.com"
                _links: {
                    self: {
                        href: "http://myurl/api/v1/contact/1/website/1"
                    }
                }
            }
    }
}

seeResponseContainsJson で応答の形式をテストしようとすると、次のようになります。

$I->seeResponseContainsJson(array(
    '_links' => array(
        'self' => array(
            'href' => $baseUrl . 'contact/1/website'
        ),
        'describedBy' => array(
            'href' => $baseUrl . 'documentation/collection' 
        ),      
    ), 
    '_embedded' => array(

    ),
));

問題は、これが常に失敗することです。ただし、_embedded のチェックを外すと、次のようになります。

$I->seeResponseContainsJson(array(
    '_links' => array(
        'self' => array(
            'href' => $baseUrl . 'contact/1/website'
        ),
        'describedBy' => array(
            'href' => $baseUrl . 'documentation/collection' 
        ),      
    ), 
));

すべて正常に動作します。私が知る限り、応答は同じであり、_embedded が JSON 解析を爆発させる理由の証拠はないようです。何か案は?

4

1 に答える 1