Codeception / Codeception/module-doctrine

Second and next requests in tests reloads entities from doctrine entity manager

Ouverte
#18 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
PHP
Étoiles
4
Forks
2
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

#### What are you trying to achieve?

All requests should use same instances of entities during the test.

#### What do you get instead?

Second and subsequent requests reloads entities which causes instances within test to be different from those that are used within those requests.

```php
grabEntityFromRepository(Foo::class, ['id' => 1]); // spl_object_hash: 000000006cf7be51000000007baa4f48
$tester->sendPUT('/foo'); // spl_object_hash: 000000006cf7be51000000007baa4f48 same as first
$tester->sendPUT('/foo'); // spl_object_hash: 000000006cf7b6b0000000007baa4f48 different than previous
$tester->sendPUT('/foo'); // spl_object_hash: 000000006cf7b5c0000000007baa4f48 different than previous

// $instance here has different values than those used within second and any subsequent request
}
```

### Workaround
In order to get latest version of the entity we have to "re-grab" it from repository:
```php
grabEntityFromRepository(Foo::class, ['id' => 1]); // spl_object_hash: 000000006cf7b5c0000000007baa4f48 is same as in last request
```
But it would be better to reuse the first instance the same way first request does.

### Details

* Codeception version: 2.5.1
* PHP Version: 7.1.24
* Operating System: Linux
* Installation type: Composer
* Suite configuration:

```yml
modules:
enabled:
- Asserts: ~
- Symfony:
cache_router: true
rebootable_client: true
- REST:
url: /api
depends: Symfony
- Doctrine2:
depends: Symfony
- \Helper\Api: ~
disabled:
- PhpBrowser
- WebDriver
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Start with the Doctrine2 module and its Symfony dependency, using the provided test flow with rebootable_client enabled to reproduce the entity identity changes across requests. Trace the entity manager and request lifecycle, then verify that the initially grabbed entity instance is reused on the second and later requests without breaking the documented re-grab workaround.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
databases, testing-qa
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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