के साथ किसी त्रुटि को ट्रिगर करने वाली विधि के वापसी मान का परीक्षण करें यह प्रश्न PHPUnit का उपयोग करने के लिए विशिष्ट है।PHPUnit
PHPUnit स्वचालित रूप से अपवादों में PHP त्रुटियों को परिवर्तित करता है। क्या किसी विधि की वापसी मान का परीक्षण करने का कोई तरीका है जो एक php त्रुटि को ट्रिगर करने के लिए होता है (या तो अंतर्निहित त्रुटियां या ट्रिगर_error के माध्यम से उपयोगकर्ता द्वारा उत्पन्न त्रुटियां)? परीक्षण करने के लिए कोड की
उदाहरण:
function load_file ($file)
{
if (! file_exists($file)) {
trigger_error("file {$file} does not exist", E_USER_WARNING);
return false;
}
return file_get_contents($file);
}
इस परीक्षण के प्रकार मैं लिखना चाहते है:
public function testLoadFile()
{
$this->assertFalse(load_file('/some/non-existent/file'));
}
समस्या मैं कर रहा हूँ
कि ट्रिगर त्रुटि मेरी इकाई परीक्षण का कारण बनता है असफल होने के लिए (जैसा कि यह होना चाहिए)। लेकिन अगर मैं इसे पकड़ने की कोशिश करता हूं, या अपेक्षित अपवाद सेट करता हूं तो कोई भी कोड जो त्रुटि ट्रिगर होने के बाद कभी निष्पादित नहीं होता है, इसलिए मेरे पास विधि के वापसी मूल्य का परीक्षण करने का कोई तरीका नहीं है।
इस उदाहरण काम नहीं करता:
public function testLoadFile()
{
$this->setExpectedException('Exception');
$result = load_file('/some/non-existent/file');
// code after this point never gets executed
$this->assertFalse($result);
}
कोई भी विचार मैं यह कैसे प्राप्त कर सकता है?
धन्यवाद जेसन। क्या आपको पता है कि PHPUnit_Framework_Error_Warning :: $ सक्षम मान स्वचालित रूप से परीक्षणों के बीच वापस आ गया है या क्या आपको इसे मैन्युअल रूप से अपने मूल मूल्य में बदलने की आवश्यकता है? – dellsala
इस बारे में एक नोट यह उत्तर। हालांकि यह अंतर्निहित PHP कार्यों और विधियों द्वारा उत्पन्न त्रुटियों के लिए काम करता है, यह उपयोगकर्ता द्वारा जेनरेट किए गए त्रुटि प्रकार (E_USER_WARNING और E_USER_NOTICE) ट्रिगर_error के लिए काम नहीं करता है। ऐसा लगता है कि PHPUnit रनटाइम पर इन्हें टॉगल करने का समर्थन नहीं करता है (संस्करण 3.3.17) – dellsala