2016-06-14 5 views
0

CodeceptionのAPIテスターはPhpBrowserモジュールを必要とし、私はServiceManagerからいくつかのサービスを取得する必要があるため、ZF2モジュールを使用します。 2.2へのアップデートCodeception後Codeception 2.2 APIテストZF2とPhpBrowserモジュール一緒

それは、この例外がスローされます:

[Codeception \例外の\ ModuleConflictException] ZF2モジュールはPhpBrowser

で を競合で一緒にZF2とPhpBrowserを有効にするには、どのような方法がありますコード化2.2?

+0

いいえ、私はあなたのユースケースを見たいのですが。 – Naktibalda

+0

[完全で最小限の検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)を読んで質問を書き直してみてください。 –

+0

実際問題は良いです、それはちょうど非常に具体的です。 – Naktibalda

答えて

0

PhpBrowserと同じスイートでZF2を使用する理由があれば、 独自のヘルパークラスを作成し、ZF2モジュールを依存関係としてロードすることができます。

構成:

modules: 
    enabled: 
     - PhpBrowser: 
      url: http://localhost/ 
     - \Helper\Zf2Helper: 
      depends: ZF2 

コードtests/_support/Helper/Zf2Helper.php

<?php 
namespace Helper; 

class Zf2Helper extends \Codeception\Module 
{ 

    private $zf2; 

    public function _inject(\Codeception\Module\ZF2 $zf2) 
    { 
    $this->zf2 = $zf2; 
    } 

    public function doSomethingWithZf2 
    { 
    $this->zf2->doSomething(); 
    } 
} 

更新:

grabServiceFromContainer方法を可能にZF2の services一部をロードすることが可能であるCodeception 2.2.2リリース以来

構成:

modules: 
    enabled: 
     - PhpBrowser: 
      url: http://localhost/ 
     - ZF2 
      part: services 
0

は、あなたの答えのためのあなたに感謝します。いくつかの改善と

の作業コード:あなたのテストコードを共有できる

<?php 
namespace Helper; 

use Codeception\Lib\Interfaces\DependsOnModule; 

class Zf2Helper extends \Codeception\Module implements DependsOnModule 
{ 

    protected $dependencyMessage = <<<EOF 
Example configuring ZF2Helper as proxy for ZF2 module method grabServiceFromContainer. 
-- 
modules: 
    enabled: 
     - \Helper\ZF2Helper: 
      depends: ZF2 
-- 
EOF; 

    private $zf2; 

    public function _inject(\Codeception\Module\ZF2 $zf2) 
    { 
     $this->zf2 = $zf2; 
    } 

    public function _depends() 
    { 
     return ['Codeception\Lib\ZF2' => $this->dependencyMessage]; 
    } 

    public function grabServiceFromContainer($service) 
    { 
     return $this->zf2->grabServiceFromContainer($service); 
    } 
} 
関連する問題