Ecomdev_PHPUnit, Controller tests and core/index/noCookies
I tried to test an observer which should kill the form_key on the
add to cart action. To do this I wanted to put a product into the cart and make sure it was added, e.g. by testing that
checkout_cart_add_product_complete was dispatched.
But my test responded with:
Failed asserting that request route matches expected one. Expected :checkout/cart/add Actual :core/index/noCookies
The problem is, that magento tries in
\Mage_Core_Controller_Varien_Action::preDispatch to make sure, that it is allowed to set cookies. It is reading the cookie
$cookies = Mage::getSingleton('core/cookie')->get(); and checked whether there is something in it:
if (empty($cookies)). In
$cookies should be at least the
frontend session id.
To make sure, that
core/cookie returns an non-empty array, we mock it:
$sessionId = 'sessionId1234'; $coreCookieMock = $this->getModelMock('core/cookie', ['get'], false, , , false); $coreCookieMock->method('get')->willReturn(['frontend' => $sessionId]); $this->replaceByMock('singleton', 'core/cookie', $coreCookieMock);