Тестирование приложения Yii REST с использованием второй базы данных

Я написал API, используя Yii2 и следуя путеводитель. Мой API работает, и я хочу написать несколько тестов для него, поэтому я еще раз последовал гид о том, как запустить тесты и получить работающие юнит-тесты. Затем я осмотрел документацию Codeception о тестирование веб-сервисов и получил это работает тоже.

Моя проблема в том, что вызовы API не используют мою тестовую базу данных. У меня есть две базы данных, одна называется db и другие testdb, Вот мой config.php файл в tests/codeception/config/:

return [
'components' => [
'db' => [
'dsn' => 'mysql:host=localhost;port=8889;dbname=testdb;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock',
],
'mailer' => [
'useFileTransport' => true,
],
'urlManager' => [
'showScriptName' => true,
],
],
];

Я написал простой тест, который отправляет запрос GET конечной точке для получения данных. Моя тестовая база данных пуста, поэтому я ожидаю получить пустой ответ, но вместо этого я получаю содержимое другой базы данных.

Затем я попытался установить YII_ENV в test как описано в разделе Постоянная окружающей среды Вот чтобы я мог проверить с переменной env YII_ENV_TEST и изменить db конфигурация соответственно. Я пытался установить эту переменную в _bootstrap.php файл в tests/codeception/ папка:

defined('YII_ENV') or define('YII_ENV', 'test');

Затем я записал значение YII_ENV в web/index.php файл (index-test.php не вызывается, это тоже может быть проблемой) и не определено.

Что я делаю неправильно? Я пытался в том числе Yii2 модуль в моем api.suite.yml файл, но запросы больше не имеют кода возврата, если я это сделаю, он возвращает N/A, Есть ли другой способ изменить, какую базу данных должен использовать Yii?

0

Решение

Вы можете сделать файл test_config.php и в конце конфигурации поместить это

if (file_exists('protected/config/test_config.php'))
{
include 'test_config.php';
}

файл будет включен, если он существует. И файл test_config.php должен содержать перезаписанное значение для соединения с БД.

Надеюсь это поможет!
Продолжайте кодировать!
Арес.

0

Другие решения

Ну, я нашел «решение» с помощью этого другого шаблона приложения: https://github.com/githubjeka/yii2-rest

Организация файлов лучше соответствует моим потребностям, и я могу легко настроить, какую базу данных использовать.

0

По вопросам рекламы [email protected]