我无法将旧项目从Phalcon 2(2.0.9)迁移到Phalcon 3(3.1.2)。代码本身似乎运行正常(首先看),但单元测试只是不起作用。 我已经浏览了文档(https://docs.phalconphp.com/en/3.0.1/reference/unit-testing.html),甚至从头开始重建我的TestHelper和UnitTestCase只是为了确保一切都到位,但特别是DI容器似乎有很多不同的工作方式在Phalcon 3中与Phalcon 2相比较。
例如:
它仍然无法正常工作(虽然我通过上述修复修复了数百条警告),现在我收到了消息" Phalcon \ Di \ Exception:Service& #39;过滤器'在依赖注入容器中找不到"当运行单元测试时,尝试使用" $ form-> isValid($ post)"来验证表单。用Phalcon 2这种方式很好。
我已经在这几天苦苦挣扎,开始计划不升级到Phalcon 3,只是为了保留一台旧服务器,Phalcon 2运行用于遗留项目,即使这感觉就像失败一样......是否有人遇到同样的问题,这是否真的 - 很难相信 - 升级到Phalcon 3的方式?
这是我的一些代码,TestHelper:
include __DIR__ . '/../../../vendor/autoload.php';
$loader = new \Phalcon\Loader();
$loader->registerDirs([ROOT_PATH]));
$loader->registerNamespaces( ... );
$loader->register();
$di = new FactoryDefault();
Di::reset();
Di::setDefault($di);
UnitTestCase(对于每个模块):
abstract class UnitTestCase extends PhalconTestCase
{
public function setUp()
{
parent::setUp();
$di = Di::getDefault();
(... setting my services as well as Request/Response here...)
$this->setDi($di);
}
}