api-platform / api-platform/core

Correct schema for associative arrays

Offen
#8,059 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
metadata OpenAPI
Vorherrschende Sprache
PHP
Sterne
2.6k
Forks
980
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
49

Beschreibung

**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".

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.