我正在尝试将 TYPO3 v8 系统更新为 TYPO3 v9,但是在进行单元测试时,我遇到了一些错误。我能够自己修复其中的一些问题,但这里的这个对我来说是一个非常困难的问题,因为单元测试对我来说一般来说有点新。我已经在网上搜索了 TYPO3 文档(似乎缺少重要部分?),询问了一些朋友并自己尝试了一些东西,但没有任何帮助。$this->environmentMock = $this->createMock(Environment::class);$this->environmentMock->expects($this->once()) ->method("::isCli") ->will($this->returnValue(TRUE));我希望手动覆盖 Environment 类附带的静态函数 ::isCli() 。如果这是不可能的,是否还有其他“解决方法”,例如设置受保护的变量或类似的东西?目前这是我的错误信息:Trying to configure method "::isCli" which cannot be configured because it does not exist, has not been specified, is final, or is static提前致谢!更新 1:使用@susis tip 后,附加代码时出现以下错误:TypeError: Return value of TYPO3\CMS\Core\Core\Environment::getContext() must be an instance of TYPO3\CMS\Core\Core\ApplicationContext, null returned附加信息:我的项目只是一个扩展文件夹,在它自己的 composer.json 中需要 TYPO3 v9 源。没有网页,没有 htdocs,只有扩展文件夹。
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
您可以在测试中初始化所需的环境,例如:
Environment::initialize(
Environment::getContext(),
true,
false,
Environment::getProjectPath(),
Environment::getPublicPath(),
Environment::getVarPath(),
Environment::getConfigPath(),
Environment::getBackendPath() . '/index.php',
Environment::isWindows() ? 'WINDOWS' : 'UNIX'
);
这与在 TYPO3 Core 测试中完成的方式相同,并允许您自定义完整的环境。如果您使用 TYPO3 测试框架/UnitTestCase 基类,则可以使用该属性protected $backupEnvironment = true;来确保在测试后重置环境。
- 1 回答
- 0 关注
- 169 浏览
添加回答
举报
0/150
提交
取消