Second and next requests in tests reloads entities from doctrine entity manager
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
- Bereich
- databases, testing-qa
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
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Codeception/module-doctrine
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 38/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
Codeception/module-doctrine#2 · 1 Kommentar · 1 Reaktion ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 64/100
Codeception/module-doctrine#6 · 1 Kommentar ·
Alle Issues in Codeception/module-doctrine
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
grokability/snipe-it#19857 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 92/100
Maintainer antworten meist innerhalb von 1 Tag
-
Authentication / Authorization Feature: Volunteer
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
WordPress/mcp-adapter#399 ·
Maintainer antworten meist innerhalb von 1 Tag