Привет!
Допустим, я полный профан в теме автоматического тестирования.
Допустим, я поставил PHPUnit.
У меня есть класс
class Main {
public $tnt;
public function __construct() {
//тут я включаю автозагрузку
spl_autoload_register<...>;
//а затем... создаю инстанс нужной мне приблуды (в данном случае это Tarantool от mail.ru)
$this->tnt = Tarantool("localhost", "port_number");
}
}
Я поясню: класс Tarantool берется из dynamic extension'а "tarantool-php", созданного для работы с этой NoSQL базой данных из php. Модуль представляет собой обычный .so-файл, собранный из исходников и подкинутый php.
Когда я запуская тест, который создает инстанс Main-класса, то получаю следующую ошибку:
"PHP Fatal error: {closure}(): Failed opening required '/var/www/gameserver/Tarantool.php' (include_path='/usr/lib/php5/') in /var/www/gameserver/app/Main.php on line xxx"
PHPUnit я запуская просто так, без каких-то bootstrap'ов, без конфигураций, без ничего.
PHPUnit, как я понимаю, думает, что я хочу загрузить класс Tarantool автолоадом из папки /var/www/gameserver/, но класс Tarantool доступен мне без автолоада, благодаря тому что у меня поставлен extension, предоставляющий его.
Вопросы:
1. Я чего-то не понимаю в организации тестирования с помощью PHPUnit и мне нужно использовать вместо реального класса Tarantool из экстеншена какой-то свой mock?
2. Если я могу использовать классы dynamic extension'ов, то как мне дать PHPUnit'у понять, откуда их подгружать? Как-то указать путь к экстеншену?
3. Может вообще неправильно использовать автолоад внутри тестируемых классов? Или как?
Спасибо.