Codeception seeResponseMatchesJsonType命令

时间:2016-08-25 12:21:23

标签: codeception

我在使用seeResponseMatchesJsonType命令时遇到问题。

我有一个带有vars名称和值的json字符串,并在"escrow_status" => "string|null"中出错。变量$escrow_status未初始化,我希望在那里得到null,但是会收到错误。

希望,有人知道如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

JsonType不支持可选字段 如果该字段可能丢失,请不要使用JsonType进行检查。

答案 1 :(得分:0)

就像@Naktibalda在评论中所说:你应该把这个断言分成两部分。有很多方法可以做到,一个是:

 $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->canSeeResponseIsJson();
 $data = json_decode($I->grabResponse());
 $I->assertArrayHasKey('escrow_status', $data); // might need the assert module

我假设你在测试中使用了一个actor类(因此$I)。