我无法在Laravel测试中发布多维数组。单维数组POST很好。也许我应该使用json_encode使用其他一些函数,但我找不到任何支持它的东西。
重要的是我能够在下面发布数据结构,我在seeJSONStructure()断言中添加了更好地说明数据结构。
以下是我的测试示例:
$this->json('POST', '/endpoint', [
'foo' => 'foo',
'bar' => [
[
'foo' => 'foo',
'bar' => 'bar'
]
]
])
->assertResponseStatus(200)
->seeJsonStructure([
'*' => [
'foo',
'bar' => [
'*' => [
'foo',
'bar'
]
]
]
]);
这给了我错误
PHPUnit_Framework_Exception: Argument #2 (No Value) of PHPUnit_Framework_Assert::assertArrayHasKey() must be an array or ArrayAccess
删除嵌套数组可以防止错误,但必须有一种POST多维数组的方法。
以下工作正常:
$this->json('POST', '/endpoint', [
'foo' => 'foo',
'bar' => 'bar'
])
->assertResponseStatus(200)
答案 0 :(得分:0)
用以下代码替换您的测试代码:
$this->json('POST', '/endpoint', [
'foo' => 'foo',
'bar' => [
[
'foo' => 'foo',
'bar' => 'bar'
]
]
])
->assertResponseStatus(200)
答案 1 :(得分:0)
根据document assertArrayHasKey()
需要为数组提供密钥...尝试这样做未经过测试...并检查您的endpoint
路径是否正确。
$this->json('POST', '/endpoint', [
'foo' => 'foo',
'bar' => [
'baz'=>[
'foo' => 'foo',
'bar' => 'bar'
]
]
])
->assertResponseStatus(200)
<强>被修改强>: JsonStructure的新代码
$this->json('POST', '/endpoint', [
'foo',
'bar' => [
'*'=>[
'foo',
'bar'
]
]
])