Страница 1 из 1

Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной

Добавлено: 2020.11.24, 17:36
spinik
Есть сайт на yii2 с шаблоном basic. Я пишу “api” тесты. На самом деле это не чистые api тесты, а тестирование экшенов сайта посредством REST API.
У сайта есть папка config c глобальными переменными для всего сайта. Работа экшенов завязана на значения этих переменных.
Как можно передать (изменить) другое значение какой-либо глобальной переменной перед запуском теста

Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной

Добавлено: 2020.11.24, 22:35
ElisDN

Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной

Добавлено: 2020.12.07, 18:46
spinik
Спасибо, жаль что я не понимаю...
Мне неясно как в index-test.php подключать разные конфиги для разных тестов

Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной

Добавлено: 2020.12.08, 17:05
ElisDN
Тогда переопределить configFile https://github.com/yiisoft/yii2-app-bas ... on.yml#L14

Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной

Добавлено: 2020.12.08, 18:37
spinik
Простите, но я сейчас как слепой и тупой
Переопределение конфига - мне ясно.
Но тут немного не то.
Есть к примеру Cest тест. И я хочу в тесте запустить yii приложение с нужным мне конфигом (если это возможно).
В моём не тестовом конфиге содержится много констант, которые как я писал выше связаны с работой экшенов. Константы могут принимать к примеру 3 значения. И вот тогда нужно переопределять конфиг 3 раза и как это сделать я до сих по не понял

Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной

Добавлено: 2020.12.08, 20:16
ElisDN
В каждом функциональном тесте одни и те же константы подменить не получится.

Вместо констант используйте переменные окружения:

Код: Выделить всё

'params' => [
    'color' => getenv('COLOR') ?: 'red',
],
и в каждом тесте переопределяйте их через:

Код: Выделить всё

putenv('COLOR=green');
Например, можно добавить кастомный метод haveEnv в FunctionalTester и вызывать его:

Код: Выделить всё

$I->haveEnv('COLOR', 'green');
$I->sendGet('...');

Re: Подключение тестовых конфигов в yii2/ Замена значения глобальной переменной

Добавлено: 2021.03.01, 17:19
spinik
Решилось всё иначе.
Изменил в api.suite.yml

Код: Выделить всё

 REST:
            url: host/index-test.php
А в самом 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();
И теперь, когда нужно при вызове экшена передается первый get параметр в запросе : TEST_NAME = 'TestCest'
Подключается нужный кусочек конфига и сливается с основным - таким образом получаю нужный конфиг