api-platform / api-platform/core

Correct schema for associative arrays

Abierto
#8,059 2 comentarios 1 reacción 0 asignados Ver en GitHub
metadata OpenAPI
Lenguaje dominante
PHP
Estrellas
2.6k
Forks
980
Merge medio
2 d 4 h
PR fusionados (30 d)
49

Descripción

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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.