Всем привет.
Занялся тестированием одного проекта. И столкнулся с задачкой моккирования объекта, который шлет курл запросы. Но архитектура этого не очень позволяет.
В лучшем случае я добился того что явно объявляю мок-класс с тем же именем и в результате использую именно свой класс вместо того который должен вызываться автолоадом
теперь приведу примерную картину кода который нужно протестировать. и собственно вопрос как лучше его протестировать или отрефакторить, чтобы его стало возможно тестировать
// базовый класс интерфейс
Спойлер (Отобразить)
PHP:
скопировать код в буфер обмена
abstract class PrimitiveService
{
/**
* @var CurlRequest
*/
protected $curl;
protected $settings;
/**
* @var string
*/
protected $cookieFile;
public function __construct($settings)
{
$this->settings = $settings;
$this->init();
}
public function init() {
$this->cookieFile = Config::getParam('tmpPath') . DIRECTORY_SEPARATOR .
get_class($this) . '_' . md5($this->settings['login']) . '.cookie'; $this->curl = new CurlRequest
(array( 'url' => $this->settings['url'],
'cookieFile' => $this->cookieFile,
));
if(!$this->checkLogin()) {
throw
new Exception
(get_class($this) . ': Cannot login to service'); }
}
abstract protected function checkLogin();
}