Я написал 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?
Вы можете сделать файл test_config.php и в конце конфигурации поместить это
if (file_exists('protected/config/test_config.php'))
{
include 'test_config.php';
}
файл будет включен, если он существует. И файл test_config.php должен содержать перезаписанное значение для соединения с БД.
Надеюсь это поможет!
Продолжайте кодировать!
Арес.
Ну, я нашел «решение» с помощью этого другого шаблона приложения: https://github.com/githubjeka/yii2-rest
Организация файлов лучше соответствует моим потребностям, и я могу легко настроить, какую базу данных использовать.