¿Cómo evitar la redirección a la página “permitir cookies” durante la prueba de unidad de controlador?
-
16-10-2019 - |
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?
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);