【发布时间】:2021-07-23 22:13:41
【问题描述】:
从 php 7.1 迁移到 7.4。我们对一个 API 进行了大约 500 个功能测试,其中一些在迁移完成后开始失败并出现错误。这些测试以前到处都是通过,现在到处都失败了——不是全部,只有 39 个。
环境信息:
- php 7.4
- 代码接收
- yii2
堆栈跟踪:
...\api\vendor\codeception\codeception\src\Codeception\Subscriber\ErrorHandler.php:83
...\api\tests\functional\SomeFileHereCest.php:72
...\api\vendor\codeception\codeception\src\Codeception\Lib\Di.php:127
...\api\vendor\codeception\codeception\src\Codeception\Test\Cest.php:138
...\api\vendor\codeception\codeception\src\Codeception\Test\Cest.php:97
...\api\vendor\codeception\codeception\src\Codeception\Test\Cest.php:80
...\api\vendor\codeception\codeception\src\Codeception\Test\Test.php:88
... more stuff here, not important
由于ErrorHandler.php:83这只是捕捉错误,让我们看看SomeFileHereCest.php:72:
// declaration of the apiPrefix variable in the class.
protected $apiPrefix;
//...
public function _before(FunctionalTester $I)
{
$this->apiPrefix = $this->config['backend']['api_prefix']; // this is the line 72
//... more similar stuff later
所以$this->config['backend']['api_prefix'] 这是一个字符串("v1")
而且我看不出问题出在哪里以及如何更深入地研究它。有什么想法吗?
【问题讨论】:
-
首先检查
isset($this->config)、isset($this->config['backend'])和isset($this->config['backend']['api_prefix']) -
好吧,我想知道为什么,但它没有在这个文件中加载配置——即使代码根本没有改变。因此,如果您从中创建答案,我可以接受它作为一个好的答案,因为我可以通过首先在此处调用加载配置函数来解决此问题,谢谢!