Я пытаюсь настроить MongoDB в качестве источника базы данных в PHP 7.2 для Codeception. Я установил конфиг в codeception.yml
:
modules:
config:
MongoDb:
dsn: 'mongodb://##.##.##.##:27017/test_data'
user: 'root'
password: '###'
dump_type: MongoDb::DUMP_TYPE_JS
dump: 'tests/_data/name.json'
populate: true
cleanup: false
enabled:
- Codeception\Lib\Driver\MongoDb
Но когда я запускаю свои тесты, я получаю эту ошибку:
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function Codeception\Lib\Driver\MongoDb::__construct(), 2 passed and exactly 3 expected in /FOLDER/vendor/codeception/codeception/src/Codeception/Lib/Driver/MongoDb.php:97
Stack trace:
#0 [internal function]: Codeception\Lib\Driver\MongoDb->__construct(Object(Codeception\Lib\ModuleContainer), Array)
#1 /FOLDER/vendor/codeception/codeception/src/Codeception/Lib/Di.php(84): ReflectionClass->newInstanceArgs(Array)
#2 /FOLDER/vendor/codeception/codeception/src/Codeception/Lib/ModuleContainer.php(92): Codeception\Lib\Di->instantiate('Codeception\\Lib...', Array, false)
#3 /FOLDER/vendor/codeception/codeception/src/Codeception/SuiteManager.php(67): Codeception\Lib\ModuleContainer->create('Codeception\\Lib...')
#4 /FOLDER/vendor/codeception/codeception/src/Codeception/Codecept.php(186): Codeception\SuiteManager->__construct(Object(Sym in /FOLDER/vendor/codeception/codeception/src/Codeception/Lib/Driver/MongoDb.php on line 97
Чтобы избавиться от ошибки аргумента, я временно изменил определение функции следующим образом:
public function __construct($dsn, $user, $password = '') { ... }
По какой-то причине оно передается числом 1
обоим $dsn
и $user
. Используя print_r
, я вижу, что существует объект Codeception\Lib\ModuleContainer
и что у него есть запись ['config']['MongoDb']
с правильной конфигурацией. Но эта информация не загружается.
Для справки: в моем файле codeception.yml
я попытался следовать начальным указаниям, которые они дают, и попытался не указывать здесь параметр конфигурации enabled
. Я также добавил database: admin
в конфигурацию MongoDb. Единственный раз, когда я даже попал в часть с ошибкой, был установлен enabled
. В противном случае я просто получаю ошибку авторизации для Mongo.