コントローラー単位テスト中に「クーキを有効にする」ページへのリダイレクトを回避するにはどうすればよいですか?

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>(ブラウザ機能検出)Cookieが無効になっている場合、CMS-PAGEにリダイレクトします

この設定は、設定フィクスチャを使用したテスト中に設定することもできます。

他のヒント

私はこのスタックオーバーフローの答えが役立つと思います:
https://stackoverflow.com/questions/14612349/cant-session-singleton-in-ecomdev-phpunit-test

基本的なアイデアは、セッションをock笑することです。そのため、「Cookies Disabled」ページにリダイレクトする代わりに、「カートに追加」アクションが成功します。

$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