Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

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

Offen
#18 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
php

Rechercherichtung

Beginnen Sie mit dem Doctrine2-Modul und seiner Symfony-Abhängigkeit und verwenden Sie den bereitgestellten Testablauf mit aktiviertem rebootable_client, um die Änderungen der Entity-Identität über mehrere Requests hinweg zu reproduzieren. Verfolgen Sie den Lebenszyklus von Entity Manager und Request und überprüfen Sie anschließend, dass dieselbe zunächst abgerufene Entity-Instanz beim zweiten und bei den folgenden Requests wiederverwendet wird, ohne den dokumentierten Re-Grab-Workaround zu beeinträchtigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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

public function test(\Codeception\Actor $tester)
{
	$instance = $tester->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
$instance = $tester->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:
modules:
    enabled:
        - Asserts: ~
        - Symfony:
            cache_router: true
            rebootable_client: true
        - REST:
            url: /api
            depends: Symfony
        - Doctrine2:
            depends: Symfony
        - \Helper\Api: ~
    disabled:
        - PhpBrowser
        - WebDriver
Vorherrschende Sprache
PHP
Sterne
4
Forks
2
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Codeception/module-doctrine

Alle Issues in Codeception/module-doctrine

Ähnliche Issues

Weitere Issues zu PHP

Neue Issues direkt in Ihr Postfach

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