Codeception 2.2 api 一起测试 ZF2 和 PhpBrowser 模块
Codeception 2.2 api tests ZF2 and PhpBrowser module together
Codeception API 测试器需要 PhpBrowser 模块,我想使用 ZF2 模块,因为我需要从 ServiceManager.
将 Codeception 更新到 2.2 后抛出此异常:
[Codeception\Exception\ModuleConflictException] ZF2 module conflicts
with PhpBrowser
有没有办法在 Codeception 2.2 中同时启用 ZF2 和 PhpBrowser?
如果您有充分的理由在与 PhpBrowser 相同的套件中使用 ZF2,
您可以创建自己的助手 class 并将 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();
}
}
更新:
自 Codeception 2.2.2 发布以来,可以加载启用 grabServiceFromContainer
方法的 ZF2 的 services
部分。
配置:
modules:
enabled:
- PhpBrowser:
url: http://localhost/
- ZF2
part: services
感谢您的回答。
经过一些改进的工作代码:
<?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);
}
}
Codeception API 测试器需要 PhpBrowser 模块,我想使用 ZF2 模块,因为我需要从 ServiceManager.
将 Codeception 更新到 2.2 后抛出此异常:
[Codeception\Exception\ModuleConflictException] ZF2 module conflicts with PhpBrowser
有没有办法在 Codeception 2.2 中同时启用 ZF2 和 PhpBrowser?
如果您有充分的理由在与 PhpBrowser 相同的套件中使用 ZF2, 您可以创建自己的助手 class 并将 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();
}
}
更新:
自 Codeception 2.2.2 发布以来,可以加载启用 grabServiceFromContainer
方法的 ZF2 的 services
部分。
配置:
modules:
enabled:
- PhpBrowser:
url: http://localhost/
- ZF2
part: services
感谢您的回答。
经过一些改进的工作代码:
<?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);
}
}