Простой вариант (костыли):
Добавить в функциях, которые ожидают ответ от внешних сервисов, исключения для тестов
if (YII_ENV_TEST) {
return true;
}
Правильный вариант:
Зарегистрировать сервис внешних обращений в конфиге, в коде пользоваться только сервисом из контейнера
Yii::$app->apiService
Cоздать загрулшку и зарегистрировать ее в качестве этого сервиса в тестовом конфиге
# config/test.php
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/web.php'),
[
'id' => 'app-tests',
'components' => [
'apiService' => [
'class' => 'App\Fake\ApiService',
],
],
],
);
return $config;
Тестовый конфиг использовать в настройках модуля Codeception
# tests/integration.suite.yml
class_name: IntegrationTester
modules:
enabled:
- Asserts
- Yii2:
part: [orm, email, fixtures]
configFile: 'config/test.php'