PHP 코드를 테스트하려고하는데 객체를 조롱합니다. 나는/테스트를 할 때마다 요청을해서는 안되기 때문에 컬 요청을하는 함수를 조롱하고 싶다. 컬 기능 자체를 조롱하면 효과가 있습니다. 그것을 다른 수업에 요구하고 조롱하는 것은 실패합니다.필요한 클래스에서 객체/함수를 조롱하는 것이 가능합니까?
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 클래스의 n이 조롱되어야하고 _set 함수가 계속 진행될 수 있도록 주어진 xml 데이터를 반환해야합니다. $ this-> object에 $ stubCurl을 첨부하려면 어떻게합니까? 아무리해도 가능합니까?감사합니다.
이것은 많은 도움이되었습니다. 정말 고마워요. – adiebler