问题
Migrating from php 7.1 to 7.4. We have like 500 functional tests for an API, and some of them started to fail with an error after the migration was complete. These tests were passing before everywhere, and now fail everywhere - not all, just 39.
Environment information:
- php 7.4
- codeception
- yii2
Stack trace:
...\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
Since ErrorHandler.php:83
this is just catching the error, let's look at the 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
So the $this->config['backend']['api_prefix']
this is a string("v1")
And I dont see where is the issue with this and how to dig into it deeper. Any ideas?
回答1:
Sounds like your variable isn't set.
Check with the following isset calls:
isset($this->config);
isset($this->config['backend']);
isset($this->config['backend']['api_prefix']);
You can actually check multiple vars in one isset call (isset($x, $y, $z)
), but this will let you see which var specifically is missing
来源:https://stackoverflow.com/questions/59322150/trying-to-access-array-offset-on-value-of-type-null