Как избежать перенаправления на страницу «Включить куки» во время теста на контроллер?

magento.stackexchange https://magento.stackexchange.com/questions/655

Вопрос

Я делаю очень простой тест контроллера, используя Ecomdev_PHPUnit:

class Foo_BarWishlist_Test_Controller_IndexController 
    extends EcomDev_PHPUnit_Test_Case_Controller
{

    /**
     * @test
     * @loadFixture ~Foo_BarWishlist/default
     */
    public function fromcartAction()
    {
        $this->dispatch('checkout/cart/add', array('product' => 10));
        $this->assertRequestDispatched();
        $body = self::getResponse()->getOutputBody();
        $this->assertResponseBodyContains('success-msg');
    }

  ...

Этот тест не удается, потому что $body пустой. При проверке self::getResponse() Более внимательно я вижу, что перенаправление в enable-cookies Страница CMS была отправлена.

Как я могу позаботиться об этом? Должен ли я установить чек-куки вручную? Должен ли я открывать еще одну страницу раньше (я уже пытался $this->dispatch('/') перед фактической отправкой)? Или есть общая проблема с файлом cookie во время тестов контроллера?

Это было полезно?

Решение

На панели администратора есть настройка:

Web> (Обнаружение возможностей браузера) перенаправление на CMS-PAGE, если файлы cookie отключены

Этот параметр также может быть установлен во время тестов, используя конфигурацию.

Другие советы

Я полагаю, что этот ответ переполненного потока поможет:
https://stackoverflow.com/questions/14612349/cant-get-session-singleton-in-ecomdev-phpunit-test

Основная идея состоит в том, чтобы издеваться над сеансом, чтобы ваше действие «Добавить в корзину» было успешным, а не перенаправляется на страницу «Отключенные файлы cookie».

$sessionMock = $this->getModelMockBuilder('admin/session')

    // This one removes `session_start` and other methods
    ->disableOriginalConstructor()

    // Enables original methods usage, because by default it overrides all methods
    ->setMethods(null)

    ->getMock();

$this->replaceByMock('singleton', 'admin/session', $sessionMock);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top