From 1de79b9a14cb080e7ec7c1a950fb112121190fdd Mon Sep 17 00:00:00 2001 From: Maxim Antonov Date: Tue, 17 Nov 2020 20:30:05 +0300 Subject: [PATCH 1/3] Fix for support Instance::of in configuration Using createObject with \yii\di\Instance::of in configuration does not work. Creating an instance of the application in the suggested way solves the problem. --- src/Codeception/Lib/Connector/Yii2.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Codeception/Lib/Connector/Yii2.php b/src/Codeception/Lib/Connector/Yii2.php index 745b4d7..1e28499 100644 --- a/src/Codeception/Lib/Connector/Yii2.php +++ b/src/Codeception/Lib/Connector/Yii2.php @@ -265,13 +265,16 @@ public function startApp() { codecept_debug('Starting application'); $config = require($this->configFile); - if (!isset($config['class'])) { - $config['class'] = 'yii\web\Application'; + if (isset($config['class'])) { + $applicationClass = $config['class']; + unset($config['class']); + } else { + $applicationClass = 'yii\web\Application'; } $config = $this->mockMailer($config); /** @var \yii\web\Application $app */ - Yii::$app = Yii::createObject($config); + Yii::$app = new $applicationClass($config); Yii::setLogger(new Logger()); } From 84fe26b794b3e6d7c4c5359cce21a62e9e17f0bc Mon Sep 17 00:00:00 2001 From: Maxim Antonov Date: Mon, 23 Nov 2020 16:53:25 +0300 Subject: [PATCH 2/3] Revert "Fix for support Instance::of in configuration" This reverts commit 01bf59e1 --- src/Codeception/Lib/Connector/Yii2.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Codeception/Lib/Connector/Yii2.php b/src/Codeception/Lib/Connector/Yii2.php index 1e28499..745b4d7 100644 --- a/src/Codeception/Lib/Connector/Yii2.php +++ b/src/Codeception/Lib/Connector/Yii2.php @@ -265,16 +265,13 @@ public function startApp() { codecept_debug('Starting application'); $config = require($this->configFile); - if (isset($config['class'])) { - $applicationClass = $config['class']; - unset($config['class']); - } else { - $applicationClass = 'yii\web\Application'; + if (!isset($config['class'])) { + $config['class'] = 'yii\web\Application'; } $config = $this->mockMailer($config); /** @var \yii\web\Application $app */ - Yii::$app = new $applicationClass($config); + Yii::$app = Yii::createObject($config); Yii::setLogger(new Logger()); } From 316c346fdc361c625dc00fba089d4914bb18b1a3 Mon Sep 17 00:00:00 2001 From: Maxim Antonov Date: Mon, 23 Nov 2020 16:55:01 +0300 Subject: [PATCH 3/3] Fix for support Instance::of in configuration v2 Using createObject with \yii\di\Instance::of in configuration does not work. Creating an instance of the application in the suggested way solves the problem. --- src/Codeception/Lib/Connector/Yii2.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Codeception/Lib/Connector/Yii2.php b/src/Codeception/Lib/Connector/Yii2.php index 745b4d7..22b5e9d 100644 --- a/src/Codeception/Lib/Connector/Yii2.php +++ b/src/Codeception/Lib/Connector/Yii2.php @@ -269,6 +269,12 @@ public function startApp() $config['class'] = 'yii\web\Application'; } + if (isset($config['container'])) + { + Yii::configure(Yii::$container, $config['container']); + unset($config['container']); + } + $config = $this->mockMailer($config); /** @var \yii\web\Application $app */ Yii::$app = Yii::createObject($config);