Frage

Ich mache einen sehr einfachen Controller -Test mithilfe 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');
    }

  ...

Dieser Test schlägt fehl, weil $body ist leer. Beim Überprüfen self::getResponse() genauer gesagt, ich sehe das eine Weiterleitung zum enable-cookies CMS -Seite wurde gesendet.

Wie kann ich mich darum kümmern? Muss ich den Check-Cookie manuell einstellen? Muss ich vorher eine andere Seite öffnen (ich habe schon a ausprobiert $this->dispatch('/') vor dem tatsächlichen Versand)? Oder gibt es während der Controller -Tests ein allgemeines Cookie -Problem?

War es hilfreich?

Lösung

Im Administratorbereich gibt es eine Einstellung:

Web> (Erkennung von Browserfunktionen) Umleitung auf CMS-PAGE, wenn Cookies deaktiviert sind

Diese Einstellung kann auch während der Tests mit einem Konfigurationsgerät eingestellt werden.

Andere Tipps

Ich glaube, diese Antwort über den Stapelüberlauf wird helfen:
https://stackoverflow.com/questions/14612349/cant-get-session-session-singleton-in-ecomdev-phpunittest

Die Grundidee besteht darin, die Sitzung zu verspotten, sodass Ihre Aktion "Hinzufügen zum Karren" erfolgreich ist, anstatt auf die Seite "Cookies Deaktiviert" umzuleiten.

$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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top