


Schlüsselpunkte
- In-Memory-Datenbank existiert nur im Anwendungsspeicher und ist eine praktische Lösung für den Testcode, der mit der Datenbank interagiert. Sie sind einfach mit Symfony -Anwendungen mithilfe von Doktrin einzurichten und sind aufgrund ihrer Entwöhnbarkeit ideal für Tests. Die Testumgebungskonfiguration von
- Symfony ermöglicht die Erstellung von entschlossenen Testdatenbanken. Die Konfigurationsdatei, die zum Festlegen dieser Datenbanken bearbeitet werden muss, lautet
app/config/config_test.php
. Unterstützung für In-Memory-Datenbanken mit SQLite3 kann das Testen erleichtern, indem SQL-Abfragen an funktionale Datenbanken gesendet werden, wodurch die Notwendigkeit der Verspottung der Repository-Klassen beseitigt wird. - Bei Verwendung einer In-Memory-Datenbank in einer Testklasse muss zuerst das Schema erstellt werden, was bedeutet, dass die Tabellen der Entität und alle erforderlichen Vorrichtungen für die Testsuite geladen werden müssen. Der Datenbank -Bootloader kann verwendet werden, um den größten Teil der Arbeiten zu erledigen, ähnlich wie die Ausführung des Befehls zur Konsolen -Konsole des Doktrin -Modus.
Testcode, der mit einer Datenbank interagiert, kann sehr schmerzhaft sein. Einige Entwickler verspotteten Datenbankabstraktionen, daher gibt es keine tatsächliche Abfrage zu testen. Andere Entwickler erstellen Testdatenbanken für Entwicklungsumgebungen. Dies kann jedoch auch in Bezug auf die kontinuierliche Integration und die Aufrechterhaltung des Zustands dieser Datenbank schmerzhaft sein. In-Memory-Datenbank ist eine Alternative zu diesen Optionen. Da sie nur im Speicher der Anwendung vorhanden sind, sind sie wirklich einmalig und sehr geeignet zum Testen. Zum Glück sind diese sehr einfach mit Symfony -Anwendungen eingerichtet, die Doctrine verwenden. Lesen Sie unsere Anleitung zum Funktionstest mit Symfony, um das End-to-End-Verhalten von Testanwendungen zu verstehen.
Symfony -Umgebungskonfiguration
Eine der mächtigsten Merkmale des Symfony -Frameworks ist die Fähigkeit, verschiedene Umgebungen mit ihren eigenen einzigartigen Konfigurationen zu erstellen. Symfony-Entwickler können diese Funktion ignorieren, insbesondere die weniger bekannten Aspekte der hier untersuchten Testumgebungen. Die Anleitung von Symfony zum Mastering und Erstellen neuer Umgebungen erläutert, wie Frameworks Konfigurationen verschiedener Umgebungen umgehen und einige nützliche Beispiele anzeigen. Die Konfigurationsdatei, die bearbeitet werden muss, um die entschärgerbare Testdatenbank festzulegen, lautet app/config/config_test.php
. Wenn der Kernel auf eine Anwendung in einer Testsuite zugreift, wird der Kernel mit der Testumgebung geladen und diese Konfigurationsdatei wird verarbeitet.
In-Memory-Datenbank mit Doctrine
SQLite3 unterstützt In-Memory-Datenbanken und ist für Tests sehr geeignet. Mit diesen Datenbanken können Sie Ihre Anwendung testen, indem Sie tatsächlich SQL -Abfragen an die Funktionsdatenbank senden und so die mühelose Simulation von Repository -Klassen mit vordefiniertem Verhalten beseitigen. Die Datenbank wird zu Beginn des Tests neu sein und am Ende sauber zerstört. Um die Konfiguration der Standard -Doktrinverbindungskonfiguration zu überschreiben, müssen Sie der Testdatei der Testumgebung die folgende Zeile hinzufügen. Wenn in Ihrer Anwendung mehrere Doktrin -Verbindungen konfiguriert sind, müssen Sie sie möglicherweise ein wenig anpassen.
# app/config/config_test.yml doctrine: dbal: driver: pdo_sqlite memory: true charset: UTF8
Verwenden der Datenbank in Testklassen
Bei Verwendung dieser glänzenden neuen In-Memory-Datenbank in der Testklasse muss zuerst das Schema erstellt werden. Dies bedeutet, eine Tabelle mit Entitäten zu erstellen und alle für die Testsuite erforderlichen Vorrichtungen zu laden. Die folgende Klasse kann als Datenbank -Bootstrap verwendet werden, was den größten Teil der Arbeit erledigt. Es hat den gleichen Effekt wie das Ausführen des Befehls für die Aktualisierungskonsole des Doktrin -Modus.
<?php namespace Tests\AppBundle; use Doctrine\ORM\EntityManager; use Doctrine\ORM\Tools\SchemaTool; use Symfony\Component\HttpKernel\KernelInterface; class DatabasePrimer { public static function prime(KernelInterface $kernel) { // 确保我们处于测试环境中 if ('test' !== $kernel->getEnvironment()) { throw new \LogicException('Primer must be executed in the test environment'); } // 从服务容器获取实体管理器 $entityManager = $kernel->getContainer()->get('doctrine.orm.entity_manager'); // 使用我们的实体元数据运行模式更新工具 $metadatas = $entityManager->getMetadataFactory()->getAllMetadata(); $schemaTool = new SchemaTool($entityManager); $schemaTool->updateSchema($metadatas); // 如果您使用的是 Doctrine Fixtures Bundle,您可以在此处加载它们 } }
Wenn Sie einen Entitätsmanager benötigen, um die Klasse zu testen, müssen Sie den Bootloader anwenden:
<?php namespace Tests\AppBundle; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Tests\AppBundle\DatabasePrimer; class FooTest extends KernelTestCase { public function setUp() { self::bootKernel(); DatabasePrimer::prime(self::$kernel); } public function testFoo() { $fooService = self::$kernel->getContainer()->get('app.foo_service'); // ... } }
Im obigen Beispiel wird der Container verwendet, um den Dienst zu testen. Wenn dieser Dienst vom Entity -Manager abhängt, wird er mit demselben Entitätsmanager erstellt, der in der setUp
-Methode gestartet wurde. Wenn mehr Kontrolle benötigt wird, z. B. eine andere Abhängigkeit, können Sie den Entitätsmanager jederzeit aus dem Container abrufen und für die manuelle Instanziierung der Klasse verwenden, die getestet werden muss. Die Verwendung von Doktrin -Vorrichtungen zur Fülle einer Datenbank mit Testdaten kann ebenfalls eine gute Idee sein, hängt jedoch von Ihrem Anwendungsfall ab.
(Der verbleibende FAQ -Teil sollte hier übersetzt werden, um es mit der ursprünglichen Textstruktur übereinzuhalten)
Das obige ist der detaillierte Inhalt vonSchneller Tipp: Testen von Symfony -Apps mit einer verfügbaren Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

PHPSSIONS CANSTORESTRINGEN, ZUGNALTEN, ARRAYS, ANDOBjekte.1.

TostartaphpSession, useSession_start () atthescript'Sbeginning.1) PlaCEITBEFOREANYOUTPUTTOTHESESSIONSCOOKIE.2) useSsionsforuserDatalikeloginStatusOrShopingCarts

Die Sitzung der Sitzung bezieht sich auf die Generierung einer neuen Sitzungs -ID und die Ungültigmachung der alten ID, wenn der Benutzer sensible Vorgänge bei festgelegten Sitzungsangriffen ausführt. Die Implementierungsschritte umfassen: 1. Erkennen sensibler Vorgänge, 2. Erstellen neuer Sitzungs-ID, 3..

PHP -Sitzungen haben erhebliche Auswirkungen auf die Anwendungsleistung. Zu den Optimierungsmethoden gehören: 1. Verwenden Sie eine Datenbank, um Sitzungsdaten zu speichern, um die Antwortgeschwindigkeit zu verbessern; 2. Reduzieren Sie die Verwendung von Sitzungsdaten und speichern Sie nur die erforderlichen Informationen. 3.. Verwenden Sie einen nicht blockierenden Sitzungsprozessor, um die Parallelitätsfunktionen zu verbessern. 4. Passen Sie die Ablaufzeit der Sitzung an, um Benutzererfahrung und Serverbelastung auszugleichen. 5. Verwenden Sie persistente Sitzungen, um die Anzahl der Les- und Schreibzeiten zu verringern.

PhpSessionsaresServer-Side, whilecookiesareclient-Side.1) SESSIsions Storedataontheserver, Aremoresecure und Handlelargerdata.2) CookieStoredataoneTheClient, AslosenSecure und LimitedInsiesindaSsibilitäts- und -Stasibilitäts- und -Stasibilitäts- und -Anssibilitäts- und -Anssibilitätsporsedataandcookiesefornonsesibel, adailliertes, adailliertes, adailliertes, adailliertes, adailliertes, addiertes-addiertes- und -Staillieren- und -Anssistieren, und -Anssibilitätsporsedaten- und -Sta- und addierta und -Anssibilitäts- und addiertes- und addailliert.

PhpidentifiesAsersSSessionUsingSSessionCookiesAndSessionIDs.1) WHANE Session_Start () iscalled, phpGeneratesAuniqueSessionIDStoredInacookienMamePhpSsidontonTheusers.2) thisidallowStoretrieVessionDataFromtheServer.

Die Sicherheit von PHP -Sitzungen kann durch folgende Maßnahmen erreicht werden: 1. Verwenden Sie Session_regenerate_id (), um die Sitzungs -ID zu regenerieren, wenn sich der Benutzer anmeldet oder eine wichtige Operation ist. 2. Verschlüsseln Sie die Übertragungssitz -ID durch das HTTPS -Protokoll. A. Verwenden Sie Session_save_path (), um das sichere Verzeichnis anzugeben, um Sitzungsdaten zu speichern und Berechtigungen korrekt festzulegen.

PhpSessionFilesArestoredinTHedRectorySpecifiedBySession.save_path, typischerweise/tmponunix-likesystemsorc: \ windows \ temponwindows


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Dreamweaver CS6
Visuelle Webentwicklungstools

Dreamweaver Mac
Visuelle Webentwicklungstools

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version
