Comment éviter la redirection vers la page « activer les cookies- » lors du test de l'unité de commande?
-
16-10-2019 - |
Question
Je fais un test de contrôleur très simple en utilisant 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');
}
...
Ce test échoue parce que $body
est vide. Lors de la vérification self::getResponse()
plus près, je vois qu'une redirection vers la page CMS enable-cookies
a été envoyé.
Comment puis-je prendre soin de tout cela? Est-ce que je dois régler le check-cookies manuellement? Dois-je ouvrir une autre page avant (j'ai essayé déjà $this->dispatch('/')
avant l'expédition réelle)? Ou est-il un problème de cookie général lors des essais du régulateur?
La solution
Il y a un paramètre pour dans le panneau d'administration:
Web> (capacités de détection du navigateur) Rediriger CMS page si les cookies sont désactivés
Ce paramètre peut également être défini lors des essais en utilisant un appareil de configuration.
Autres conseils
Je crois que cette réponse de débordement de pile aidera:
https://stackoverflow.com/questions/14612349/cant-get- session singleton en ecomdev-phpunit test
L'idée de base est de se moquer de la session afin alors votre action « ajouter au panier » est un succès au lieu de rediriger vers la page « désactivé les cookies ».
$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);