एक शुद्ध इकाई परीक्षण में देखते हैं, क्या तुम सच में परीक्षण नहीं है एक असली ईमेल भेज दिया गया है कि क्या है, बल्कि क्या उचित प्रोग्रामिंग इकाई (इस मामले में mail
समारोह) बुलाया गया है। मुझे वास्तव में यह नहीं पता कि कैसे परीक्षण किया जाए कि mail
फ़ंक्शन वास्तव में काम करता है क्योंकि मुझे गहराई से ज्ञान नहीं है कि ईमेलिंग कैसे हुड के तहत काम करती है। तो, मैं बस लिखूंगा कि मैं यूनिट टेस्ट कैसे करूंगा।
आप अपने क्लास कन्स्ट्रक्टर को वैकल्पिक तर्क स्वीकार कर सकते हैं, एक ऐसा फ़ंक्शन जो वास्तव में ईमेल भेजने का असली काम करता है। डिफ़ॉल्ट रूप से, यह mail
फ़ंक्शन होगा, लेकिन आपके परीक्षण सेटअप में, आप अपना विशेष कार्य प्रदान करेंगे जो वास्तव में सही विषय, शरीर और शीर्षलेख मौजूद हैं।
परीक्षण:
<?php
class EmailerTest extends PHPUnit_Framework_TestCase
{
public function testMailFunctionIsCalledWithCorrectArguments()
{
$actualSubject, $actualBody, $actualHeaders;
$mailFunction = function ($subject, $body, $headers)
use (&$actualSubject, &$actualBody, &$actualHeaders) {
$actualSubject = $subject;
$actualBody = $body;
$actualHeaders = $headers;
};
$emailer = new Emailer($options, $mailFunction);
$emailer->send();
$this->assertEquals('Expected subject', $actualSubject);
$this->assertEquals('Expected body', $actualBody);
$this->assertEquals('Expected headers', $actualHeaders);
}
}
और परीक्षण के अंतर्गत वर्ग:
<?php
class Emailer
{
public function __construct($options, $mailFunction = 'mail')
{
$this->subject = $options->subject;
$this->body = $options->body;
// etc.
$this->mailFunction = $mailFunction;
}
public function send()
{
// find out $subject, $body, $headers, and then...
call_user_func_array($this->mailFunction, array(
$subject,
$body,
$headers
));
}
}
यह छद्म कोड के कुछ प्रकार, आप को पूरा करने या लागू करने के लिए के लिए है क्योंकि मैं मूल्यों के कुछ छोड़ दिया गया है । मुख्य बिंदु यह है कि आपको उस कक्षा के सहयोगियों के लिए परीक्षण युगल की आपूर्ति करनी चाहिए, जिसका आप परीक्षण कर रहे हैं।
इस मामले में यह केवल एक फ़ंक्शन है (मैंने कुछ PHP 5.3 का उपयोग किया है) विशेषताएं, लेकिन यह एक ऑब्जेक्ट उदाहरण हो सकता है कि आप परीक्षण के तहत कक्षा में प्रवेश करेंगे।
नेटबीन ऐसा कैसे करते हैं? धन्यवाद। – thom
इसमें PHPUnit सुविधा कोड-पूर्णता एकीकृत है जो PHPUnit परीक्षण फ़ंक्शंस सूचीबद्ध करती है। यह आपके लिए सभी काम नहीं करता है, यह केवल इसे आसान बनाने की सुविधा प्रदान करता है। इस आलेख को http://netbeans.org/kb/docs/php/phpunit.html आज़माएं – Panuwizzle