Ich möchte eine Transaktions-Rollback-Methode verwenden, um meine Datenbank für Komponententests zu isolieren. Idealerweise würde ich eine Struktur etwas wie folgt verwenden:So starten und Rollback einer Datenbanktransaktion, um eine PHPUnit-Suite für Magento zu wickeln
public static function setUpBeforeClass(){
Mage_Core_Model_Resource_Transaction::beginTransaction();
}
public function testOne(){...}
public function testTwo(){...}
public static function tearDownAfterClass(){
Mage_Core_Model_Resource_Transaction::rollBack();
}
Leider ist die Mage_Core_Model_Resource_Transaction
Klasse nicht öffentlich zugänglich gemacht wird beginnen/Funktionen rollbacktransaction. Ich kann keine öffentlichen Magento-Funktionen finden, um die Anforderung zu erfüllen. Gibt es ein Zend-Äquivalent, das funktioniert?
Ich denke, ich könnte Mage_Core_Model_Resource_Transaction
umschreiben und öffentliche Wrapper für die geschützten Methoden hinzufügen, aber ich bin zögerlich, eine solche Kernklasse zu überschreiben.
Ich habe auch versucht
$this->model = Mage::getModel('model_being_tested');
$this->model->getResource()->beginTransaction();
...
$this->model->getResource()->rollBack();
und dann die $this->model
in den Tests verwenden, aber das nicht in statischen Funktionen verwendet werden kann.
Irgendwelche Vorschläge oder alternative Architekturen? Danke im Voraus.
Dank Ivan, nützliche Informationen erneut das Produkt begehen. Ich würde gerne mit der MageTestSuite helfen, hast du ein Repo zu teilen? DM mir die Details, wenn Sie daran interessiert sind. –
@ Jonathan Ich werde Ihnen SVN-Zugangsdaten senden, sobald ich in der Lage bin, die ursprüngliche Version zu erstellen. Es scheint nicht früher als Januar zu sein. –
@Ivan: Bitte lassen Sie mich auch wissen, wenn Ihre Testsuite verfügbar ist. Vielleicht postest du etwas in deinem Blog? – OSdave