我試圖測試一些我的php代碼,但與嘲笑對象失敗。我想模擬一個執行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中的n,並返回給定的xml數據以供繼續使用。如何將$ stubCurl附加到$ this-> object?無論如何可能嗎?
謝謝你的時間。
這幫了我很多,非常感謝。 – adiebler 2012-02-24 17:05:56