Есть сайт на yii2 с шаблоном basic. Я пишу “api” тесты. На самом деле это не чистые api тесты, а тестирование экшенов сайта посредством REST API.
У сайта есть папка config c глобальными переменными для всего сайта. Работа экшенов завязана на значения этих переменных.
Как можно передать (изменить) другое значение какой-либо глобальной переменной перед запуском теста
Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной
Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной
Спасибо, жаль что я не понимаю...
Мне неясно как в index-test.php подключать разные конфиги для разных тестов
Мне неясно как в index-test.php подключать разные конфиги для разных тестов
Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной
Простите, но я сейчас как слепой и тупой
Переопределение конфига - мне ясно.
Но тут немного не то.
Есть к примеру Cest тест. И я хочу в тесте запустить yii приложение с нужным мне конфигом (если это возможно).
В моём не тестовом конфиге содержится много констант, которые как я писал выше связаны с работой экшенов. Константы могут принимать к примеру 3 значения. И вот тогда нужно переопределять конфиг 3 раза и как это сделать я до сих по не понял
Переопределение конфига - мне ясно.
Но тут немного не то.
Есть к примеру Cest тест. И я хочу в тесте запустить yii приложение с нужным мне конфигом (если это возможно).
В моём не тестовом конфиге содержится много констант, которые как я писал выше связаны с работой экшенов. Константы могут принимать к примеру 3 значения. И вот тогда нужно переопределять конфиг 3 раза и как это сделать я до сих по не понял
Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной
В каждом функциональном тесте одни и те же константы подменить не получится.
Вместо констант используйте переменные окружения:
и в каждом тесте переопределяйте их через:
Например, можно добавить кастомный метод haveEnv в FunctionalTester и вызывать его:
Вместо констант используйте переменные окружения:
Код: Выделить всё
'params' => [
'color' => getenv('COLOR') ?: 'red',
],
Код: Выделить всё
putenv('COLOR=green');
Код: Выделить всё
$I->haveEnv('COLOR', 'green');
$I->sendGet('...');
Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной
Решилось всё иначе.
Изменил в api.suite.yml
А в самом index-test.php сделали так:
И теперь, когда нужно при вызове экшена передается первый get параметр в запросе : TEST_NAME = 'TestCest'
Подключается нужный кусочек конфига и сливается с основным - таким образом получаю нужный конфиг
Изменил в api.suite.yml
Код: Выделить всё
REST:
url: host/index-test.php
Код: Выделить всё
$config = require(__DIR__ . '/config/web.php');
$config_test = [];
$test = $_GET['TEST_NAME'] ?? '';
if (!empty($test)) {
$config_test = require(__DIR__ . '/tests/codeception/config/'.$test.'/config.php');
}
$Application = new yii\web\Application(yii\helpers\ArrayHelper::merge($config,$config_test));
$Application->run();
Подключается нужный кусочек конфига и сливается с основным - таким образом получаю нужный конфиг