Я пытаюсь протестировать некоторые из моих php-кодов, но потерпел неудачу с насмешливыми объектами.Я хочу смоделировать функцию, которая делает запрос curl, так как он не должен делать запрос каждый раз / тест.Дразнить саму функцию curl, работает.Не удается запросить другой класс и высмеивать его там.
Вот файлы:
helper.curl.php:
class Helper_Curl {
/*
** __construct($callDomain) - construct new curl helper using set calldomain
*/
public function __construct($callDomain) {
$this->callDomain = $callDomain;
}
/*
** sendPostArrayToApi($Array) - HTTP POST request to server
*/
public function sendPostArrayToApi($Array) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->callDomain);
// [... curl Settings ...]
$return = curl_exec($ch);
curl_close($ch);
return $return;
}
}
class.request.php
require_once('helper.curl.php');
class RequestClass {
function _set($data, $set_type='edit'){
// [... some code ...]
$curl = new Helper_Curl('http://example.com');
$xml = $curl->sendPostArrayToApi($InfoArray);
if($xml == "") {
return false;
}
// [... some more code ...]
}
}
И, наконец, тест:
class ClassRequestTest extends PHPUnit_Framework_TestCase {
public function setUp() {
require_once('class.request.php');
}
public function testSetRefund() {
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<response>
<info-id>12345</info-id>
<transmit-id>315</transmit-id>
</response>';
$stubCurl = $this->getMock('Helper_Curl');
$stubCurl->expects($this->once())
->method('sendPostArrayToApi')
->will($this->returnValue($xml));
$this->object->_set($DataArray);
}
protected function tearDown() {
unset($this->object);
}
}
Функция sendPostArrayToApi из класса Helper_Curl должна быть смоделирована и возвращать данные xml для продолжения функции _set.Как мне прикрепить $ stubCurl к объекту $ this->?Возможно ли это как-нибудь?
Спасибо за ваше время.