5

いくつかの深刻なデバッグの後、EcomDev_PHPUnitモジュールでテストを実行しているときに、Magentoでセッションオブジェクトを取得するために呼び出すことができないことがわかりました

シングルトン/モデル呼び出し、つまりMage::getSingleton('admin/session')、または最終的には、インデックスが設定されていない ために発生したというMage::getModel('customer/session')例外をスローしますEcomDev_PHPUnit_Controller_Request_Http::getHttpHost()Cannot run controller test, because the host is not set for base url.$_SERVER['HTTP_HOST']

これを引き起こすために私が見逃している可能性のあるものが構成にありますか?

4

2 に答える 2

13

Magento の内部コア部分である Magento セッションの初期化に関連する問題です。このエラーを取り除くには、コア php セッションを使用するため、標準の Magento セッション初期化プロセスを使用しないモック オブジェクトを使用します。

EcomDev_PHPUnit_Test_Case クラスの 1 つからテスト ケースを拡張した場合は、次のコードを使用してセッション オブジェクトをモックに置き換えることができます。

$sessionMock = $this->getModelMockBuilder('admin/session')
        ->disableOriginalConstructor() // This one removes session_start and other methods usage
        ->setMethods(null) // Enables original methods usage, because by default it overrides all methods
        ->getMock();
$this->replaceByMock('singleton', 'admin/session', $sessionMock);
于 2013-01-30T19:53:53.180 に答える
0

phpunit.xml でホストを設定できます

<phpunit ....>
    ...
    <php>
        <server name='HTTP_HOST' value='http://local.mysite.com' />
    </php>
</phpunit>
于 2016-08-15T17:45:00.403 に答える