मैंने पाया कि मैं PHPUnit इस्तेमाल कर सकते हैं मेरी वेबसाइट का हिस्सा है कि एक संयोजन के माध्यम से सत्र पर काफी निर्भर करता, के व्यवहार का परीक्षण करने के कर्ल और कुकी जो सत्र आईडी पास करता है।
निम्नलिखित Curl
कक्षा सत्र पैरामीटर पास करने के लिए CURLOPT_COOKIE
विकल्प का उपयोग करती है। स्थिर चर $sessionid
विभिन्न कर्ल कॉल के बीच सत्र बचाता है। इसके अलावा, स्थिर फ़ंक्शन changeSession
का उपयोग करके सत्र बदला जा सकता है।
class Curl {
private $ch;
private static $sessionid;
public function __construct($url, $options) {
$this->ch = curl_init($url);
if (!self::$sessionid)
self::$sessionid = .. generateRandomString() ..;
$options = $options + array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_COOKIE => 'PHPSESSID=' . self::$sessionid);
foreach ($options as $key => $val) {
curl_setopt($this->ch, $key, $val);
}
}
public function getResponse() {
if ($this->response) {
return $this->response;
}
$response = curl_exec($this->ch);
$error = curl_error($this->ch);
$errno = curl_errno($this->ch);
$header_size = curl_getinfo($this->ch, CURLINFO_HEADER_SIZE);
$this->header = substr($response, 0, $header_size);
$response = substr($response, $header_size);
if (is_resource($this->ch)) {
curl_close($this->ch);
}
if (0 !== $errno) {
throw new \RuntimeException($error, $errno);
}
return $this->response = $response;
}
public function __toString() {
return $this->getResponse();
}
public static function changeSession() {
self::$SESSIONID = Practicalia::generateRandomString();
}
}
एक उदाहरण कॉल
$data = array(
'action' => 'someaction',
'info' => 'someinfo'
);
$curl = new Curl(
'http://localhost/somephp.php',
array(
CURLOPT_POSTFIELDS => http_build_query($data)));
$response = $curl->getResponse();
और बाद में किसी भी कर्ल कॉल अपने आप जब तक कि विशेष Curl::changeSession()
कहा जाता है, पिछले एक के रूप में एक ही सत्र का प्रयोग करेंगे।
स्रोत
2016-08-31 15:05:32
क्या आप हैकी पर विस्तार कर सकते हैं? क्या आप परीक्षण के 'सेटअप' में बस 'अनसेट ($ _ कुकी)' कर सकते हैं? –
मैं वास्तव में अपने परीक्षणों में उससे निपटना नहीं चाहता हूं। मुझे लगता है कि यह अनावश्यक अव्यवस्था है और इसे स्वचालित रूप से निपटाया जाना चाहिए। –