我在测试用例中发送一个发布请求,并且我想断言特定元素。 假设我有一个密钥
x
存在于响应中。在这种情况下,我不能说 seeJson(['x' => whatever]);
,因为该值是未知的。
当然,我做不到seeJson(['x']);
。
有办法解决这个问题吗?
如果重要的话:
Laravel: v5.2.31
PHPUnit: 5.3.4
愿它对其他人有帮助。您可以为您的检查响应 json 结构编写此测试
$this->post('/api/login/', [
'email' => '[email protected]',
'password' => '123123123',
])->assertJsonStructure([
'status',
'result' => [
'id',
'email',
'full_name',
],
]);
虽然根本不是最优的,但我还是选择用这段代码来测试一下情况:
$this->post(URL, PARAMS)->see('x');
X 是一个假设的名称,实际的元素键在其余数据中出现的可能性很小。否则这个令人讨厌的解决方法将不切实际。
这是正确执行此操作的解决方案:
public function testCaseName()
{
$this->post(route('route.name'), [
'param1' => 1,
'param2' => 10,
], [
'headers_if_any' => 'value'
]);
$res_array = (array)json_decode($this->response->content());
$this->assertArrayHasKey('x', $res_array);
}