Wie rollback einer Transaktion, wenn dabei testen mit phpUnit in symfony2
Teste ich den Controller mit dem crawler, aber wenn ich im posting, dass eine form erzeugt keine Fehler, Sie nach dem speichern des Formulars in der Datenbank.
Wie kann ich verhindern, ihn zu tun, sodass man ohne änderungen an der Steuerung, und ohne Prüfung etwas anderes.
Ist es am besten Praxis über diese Art von test ?
Ich habe versucht, das rollback, aber in der ControllerTest es ist nicht mehr aktiven Transaktionen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie schreiben Sie Ihre eigenen test-client-Klasse, die sich Symfony\Bundle\FrameworkBundle\Client.
Es ist, weil die Standard-client nicht teilen connection-Objekt zwischen den Anforderungen (so Sie nicht verwenden können, Transaktionen außerhalb der test-client). Wenn Sie erweitern das test-client Sie verarbeiten kann die Transaktion durch Ihre eigenen.
In der client-Klasse, die Sie benötigen, stellen Sie die statische connection-Objekt, und überschreiben die Methode doRequest() um zu vermeiden das neue connection-Objekt jedes mal, aber verwenden Sie unser statisches statt.
Es ist hier auch beschrieben:
http://alexandre-salome.fr/blog/Symfony2-Isolation-Of-Tests
Wenn du deine eigene Methode doRequest alles, was Sie brauchen, ist Griff Transaktion, so dass Sie wickeln die handle () - Methode mit begin und rollback. Ihre Methode doRequest Aussehen könnte JMD so:
Lesen Sie in der Dokumentation von PHPUnit für Datenbank-Tests
http://www.phpunit.de/manual/3.6/en/database.html
Müssen Sie das setup der Datenbank und der Abbau der änderungen, die Sie gemacht.
Wenn Sie denken, dass die oben ist zu kompliziert, vielleicht sind Sie daran interessiert im machen ein Modell Ihres Datenbank-layer
http://www.phpunit.de/manual/3.6/en/test-doubles.html
Mockup ist ein benutzerdefiniertes Objekt erstellen, mit Sitz in der original-Objekt, in dem Sie Ihre eigenen test-Steuerelemente. Wahrscheinlich in diesem Fall sind Sie daran interessiert, mockup der Entity Manager der Lehre