api-platform / api-platform/core

Correct schema for associative arrays

Ouverte
#8,059 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
metadata OpenAPI
Langage dominant
PHP
Étoiles
2.6k
Forks
980
Merge moyen
2 j 4 h
PR mergées (30 j)
49

Description

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

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.