CodeceptionがRESTモジュール、より具体的には「grabDataFromJsonResponse」メソッドを介してプルバックしている配列からキーを取得しようとしています。その配列から最初のキーを取得したいと思います。これは、grabDataFromJsonResponse 関数を使用すると、必要なデータのみを返すのに十分な範囲で選択できるためです。ただし、Codeception はそれをオブジェクトに変換するように見えるため、間違ったキーを取得します。以下はコードサンプルと、Codeception が返す配列オブジェクトのサンプル (上部) です。
public function returningArrayKey(WebGuy $I)
{
$I->sendPOST(mypostdata);
$I->seeResponseCodeIs(200);
$I->seeResponseContains("Success");
$jsonListingObj = $I->grabDataFromJsonResponse("tree.traversing.traversed");
$I->checkAgainstKey("123456789", key($jsonListingObj));
}
関数 checkAgainstKey は単に AssertEquals を実行します。
function compareListingId($listingId, $oJsonObjectData)
{
$this->assertEquals($listingId, $oJsonObjectData);
}
ただし、最初のキーは次のとおりであるため、assertEquals は常に失敗します。
Codeception\Maybe Object
(
[position:protected] => 0
[val:protected] => Array
(
[123456] => Array
( etc.
上記のように key() を使用すると、'position:protected' が返されます。配列を掘り下げて 123456 を返すにはどうすればよいですか? 123456 で表される配列キーは、REST 応答に基づいて動的になります。
ありがとう!