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

Всё про тестирование в Yii 2.0
Закрыто
spinik
Сообщения: 15
Зарегистрирован: 2020.11.24, 17:03

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

Сообщение spinik »

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

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

Сообщение spinik »

Спасибо, жаль что я не понимаю...
Мне неясно как в index-test.php подключать разные конфиги для разных тестов
spinik
Сообщения: 15
Зарегистрирован: 2020.11.24, 17:03

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

Сообщение spinik »

Простите, но я сейчас как слепой и тупой
Переопределение конфига - мне ясно.
Но тут немного не то.
Есть к примеру Cest тест. И я хочу в тесте запустить yii приложение с нужным мне конфигом (если это возможно).
В моём не тестовом конфиге содержится много констант, которые как я писал выше связаны с работой экшенов. Константы могут принимать к примеру 3 значения. И вот тогда нужно переопределять конфиг 3 раза и как это сделать я до сих по не понял
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN »

В каждом функциональном тесте одни и те же константы подменить не получится.

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

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

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

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

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

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

$I->haveEnv('COLOR', 'green');
$I->sendGet('...');
spinik
Сообщения: 15
Зарегистрирован: 2020.11.24, 17:03

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

Сообщение 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'
Подключается нужный кусочек конфига и сливается с основным - таким образом получаю нужный конфиг
Закрыто