[英]Phalcon PHP Unit Testing DI Shared Instance
因此,我已经开始在我的phalcon应用程序中实施单元测试,并且遇到了与使用Phalcon DI容器有关的问题。 可能只是我缺乏理解,但似乎无法让我的服务在所有测试用例中用作共享实例。 这是可以开始的吗? 我在网上搜索了尽可能多的资源,甚至按照Phaclon网站上的教程进行操作,但无济于事。 所以这是到目前为止我的文件
的init.php
<?php
use Phalcon\Loader;
use Phalcon\Di;
use Phalcon\Di\FactoryDefault;
ini_set("display_errors", 1);
error_reporting(E_ALL);
define("ROOT_PATH", __DIR__);
define("SRC_PATH", __DIR__ . '/../src');
set_include_path(
ROOT_PATH . PATH_SEPARATOR . get_include_path()
);
// Required for phalcon/incubator
include __DIR__ . "/../vendor/autoload.php";
// Setup Phalcon autoloader.
$loader = new Loader();
$loader->registerDirs(
[
ROOT_PATH,
SRC_PATH . '/util'
]
);
$loader->registerNamespaces(
[
'App\Test\Libs' => ROOT_PATH . '/libs'
]
);
$loader->register();
// Setup DI Container.
$di = new FactoryDefault();
$di->setShared('someClass', function () {
return new \App\Test\Libs\SomeClass();
});
Di::setDefault($di);
现在在我的UnitTestCase中,如果我这样做
public function setUp() {
parent::setUp();
$di = Di::getDefault();
var_dump($di->getServices()); // None of my services from the bootstrap show up ???
$this->setDi($di);
$this->_loaded = TRUE;
}
由于上述原因,我对UnitTestCase进行扩展的实际测试均无法访问自定义服务。
我尝试在UnitTestCase setUp()
移动Phalcon DI初始化,但是这意味着每次我想检索同一实例时,都会返回我的服务的新实例。
那有什么我想念的吗? 这甚至是正确的方法吗?
我非常感谢您提供有关此问题的任何形式的指导
我建议配置PHPUnit来加载设置应用程序DI的Phalcon引导程序文件。
<phpunit backupGlobals="false" backupStaticAttributes="false" bootstrap="./bootstrap.php">
您可能需要将./bootstrap.php
更改为引导应用程序的Phalcon实例和DI的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.