api-platform / api-platform/core
Correct schema for associative arrays
- Ngôn ngữ chính
- PHP
- Star
- 2.6k
- Fork
- 980
- Merge trung bình
- 2 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 49
Mô tả
**API Platform version(s) affected**: 3.0.3
**Description**
I tried various ways to annotate a field that has this kind of shape : array{ string => array }, but i keep getting "Object value found, but an array is required" in my tests when i use assertMatchesResourceItemJsonSchema .
The only annotation that "works" for tests is \stdClass, but that's hardly correct. I couldn't find anything relevant about this in the documentation, but i might have missed it?
**How to reproduce**
```php
#[ApiResource(
operations: [new Get(provider: BugProvider::class)] //provider.provide() only returns new Bug()
)]
class Bug
{
#[ApiProperty(identifier: true)]
public $id;
/**
* @var array $something
*/
public array $something = [];
public function __construct()
{
$this->id = 1;
$this->something = ['a' => ['val1', 'val2'], 'b' => ['whatever']];
}
}
```
Then a simple test :
```php
class BugTest extends ApiTestCase
{
function testBug(): void
{
self::createClient()->request('GET', '/bugs/1');
$this->assertResponseIsSuccessful();
$this->assertMatchesResourceItemJsonSchema(Bug::class);
}
}
```
and you get "something: Object value found, but an array is required".
Hướng dẫn đóng góp
Đánh giá
Issue này chưa được đánh giá.