¿Cómo evitar la redirección a la página “permitir cookies” durante la prueba de unidad de controlador?

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

Pregunta

Me estoy haciendo una prueba de control muy simple usando 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');
    }

  ...

Esta prueba falla porque $body está vacía. Al comprobar self::getResponse() más de cerca, veo que una redirección a la página enable-cookies CMS fue enviado.

¿Cómo puedo cuidar de esto? ¿Tengo que configurar el registro de entrada de galletas de forma manual? ¿Tengo que abrir otra página antes (Ya he probado un $this->dispatch('/') antes de la expedición real)? O hay un problema general de galletas durante las pruebas del controlador?

¿Fue útil?

Solución

Hay un escenario para que en el panel de administración:

Web> Opciones del navegador (Detección) Redirigir a CMS-página si se desactivan las cookies

Este ajuste también se puede ajustar durante las pruebas utilizando un accesorio de config.

Otros consejos

Creo que este desbordamiento de pila respuesta ayudará:
https://stackoverflow.com/questions/14612349/cant-get- sesión de Singleton-en-ecomdev-PHPUnit prueba

La idea básica es la de burlarse de la sesión, para entonces su acción "añadir al carrito" tiene éxito en lugar de volver a dirigir a la página "galletas de personas con discapacidad".

$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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top