Tipp #5: Secure Area
Problem: Testfälle, die EcomDev_PhpUnit_Test_Case_Controller
extenden und eine customer Fixture nutzen, schlagen mit Cannot complete this operation from non-admin area bzw. Diese Aktion kann nicht außerhalb des Admin-Bereichs fertiggestellt werden. fehl weil Magento beim tearDown im area=frontend
Modus ist und kein Löschen von Kunden erlaubt. Das selbe Problem tritt auf, wenn man versucht, Kunden im Test zu löschen, ohne im adminhtml Kontext zu sein.
Das Customer Model prüft, ob das isSecureArea
Flag in der Magento Registry, um das Problem zu lösen, setzen wir den Flag also im Test. Es gibt zwei mögliche Wege dies zu tun:
1.) Wenn Du Kunden im Test selbst erstellst und löschst:
/* * @test * @registry isSecureArea */ public function testThatNeedsToDeleteCustomers() { Mage::register('isSecureArea', true); // ... }
(Beachte, dass die @registry
Annotation den Flag nachher zurücksetzt, siehe Tipp #1)
2.) Wenn Du eine Fixture mit Kunden nutzt:
protected function setUp() { Mage::register('isSecureArea', true); parent::setUp(); } protected function tearDown() { parent::tearDown(); Mage::unregister('isSecureArea'); }
oder bei Fixtures auf Klassen-Ebene:
public static function setUpBeforeClass() { Mage::register('isSecureArea', true); } public static function tearDownAfterClass() { Mage::unregister('isSecureArea'); }