Tipp #9: Checkout Test
Vor 3 Jahren habe ich schonmal einen Artikel dazu geschrieben, wie man einen Integrationstest für den Checkout schreibt. Aber die Praktiken, die ich dort angewendet habe sind heute nicht mehr aktuell und einige der Workarounds sind nicht mehr notwendig. Dieser Beitrag zeigt, was notwendig ist um einen Test zu schreiben, der den Magento Checkout simuliert und nutzt dabei die in Tipp #1 gelernte Technik.
- Da einige Singletons involviert sind, stelle sicher, dass ihr Status zurückgesetzt wird:
/* * @test * @singleton checkout/session * @singleton customer/session * @singleton checkout/cart */
- Es ist ratsam, als erstes den Warenkorb zu besuchen, um die Totals Collection zu triggern. Angenommen, der Kunde hat die ID 1 und einen aktiven Warenkorb (von zuvor im Test in den Warenkorb gelegten Produkten oder einer Quote Fixture), dann beginnen wir mit:
$this->customerSession(1); $this->dispatch('checkout/cart');
- Vor jedem neuen Request, muss das Checkout Session Singleton manuell während des Tests zurückgesetzt werden, sonst wird die Quote nicht neu geladen und kann unter Umständen ganz verloren gehen:
Mage::unregister('_singleton/checkout/session'); $this->customerSession(1); $this->dispatch('checkout/onepage');
- Manchmal möchte man einen Kunden mit aktivem Warenkorb ausloggen. Dazu sind drei Schritte notwendig:
Mage::getSingleton('customer/session')->logout(); Mage::getSingleton('checkout/cart')->unsetData(); $this->guestSession();