2011-10-04 11 views
5

मैं कमांडलाइन के माध्यम से अपने यूनिट परीक्षण चलाता हूं और यह ठीक काम करता है।PHP में इकाई परीक्षण सत्र चर कैसे करें?

लेकिन समस्या यहाँ जब मैं एक समारोह है कि कोड है कि एक सत्र चर पढ़ शामिल परीक्षण, मैं एक मूल्य अशक्त ..

मेरा अनुमान है कि आप सत्र चर का उपयोग नहीं कर सकते हैं जब आप एक ब्राउज़र में नहीं हैं मिलता है।

मैं PHP के साथ यह कैसे कर सकता हूं? क्या यह संभव है?

रास्ता CodeIgniter 1.7.2 का उपयोग कर इम और CIUnit v0.17 तक

कोई सुझाव

या टिप्पणी मेरे लिए एक बहुत मदद होगी ..

धन्यवाद

+0

मैं एक समर्पित कक्षा में सत्र डेटा पहुंच लपेटता हूं और परीक्षण में नकली करता हूं। – Phil

+0

सीआई सत्र असंगत कुकीज़ हैं, इसलिए हाँ, वे ब्राउज़र में काम करते हैं –

+0

धन्यवाद फिल और डेमियन उत्तर के लिए .. @ फिल मैं यह कैसे करूँगा? तो माफ करना इस पर पूरी तरह से नोब है .. क्या मैं आपके साथ ठीक होने पर एक उदाहरण या प्रक्रियाओं के लिए पूछ सकता हूं .. thx –

उत्तर

8

मैं के लिए एक वर्ग का उपयोग फिल के सुझाव के रूप में सत्र। यदि आप session_start() को मैन्युअल रूप से कॉल करते हैं तो आप PHP कोड कार्यान्वयन में अपना कोड बाध्य कर रहे हैं। session_start मेरे आह्वान के बाद के साथ अपने सत्र वर्ग द्वारा सुरक्षित है:

if (!isset($_SESSION)) 
    { 
    // If we are run from the command line interface then we do not care 
    // about headers sent using the session_start. 
    if (PHP_SAPI === 'cli') 
    { 
     $_SESSION = array(); 
    } 
    elseif (!headers_sent()) 
    { 
     if (!session_start()) 
     { 
      throw new Exception(__METHOD__ . 'session_start failed.'); 
     } 
    } 
    else 
    { 
     throw new Exception(
      __METHOD__ . 'Session started after headers sent.'); 
    } 
    } 

संपादित करें:

ऊपर कोड अपने सत्र वर्ग में जाना जाएगा (और शायद इसके निर्माता द्वारा किसी तरह से कहा जा)। कमांड लाइन PHP session_start को कॉल करने के बजाय एक सरणी बनाता है (जो कमांड लाइन पर काम नहीं करता है)।

कोड है कि सत्र चर मैं अपने परीक्षण में सत्र चर नकली पर निर्भर करता है परीक्षण जब:

$_SESSION = array('key1' => 'value you want', 'key2' => 'etc.'); 

यह आपको हर संभव सत्र सेटिंग कि आपको पृष्ठ पर प्राप्त होगा परीक्षण करने के लिए अनुमति देता है।

परीक्षण मूल्यों का निर्माण करने वाले कोड के साथ संबंधित कोड है जो उनके विचार में उन्हें बनाता है, इसलिए उनके अस्तित्व का मज़ाक करना मेरे लिए ठीक लगता है। इस तरह आप उन्हें संयोजित करने और परीक्षण के बीच सत्र मूल्यों को रखने के बजाय अलग-अलग इकाई का परीक्षण कर रहे हैं।

+0

उत्तर के लिए धन्यवाद पॉल। क्या इसका मतलब यह है कि मैं अपना सत्र सत्र बनाउंगा? मैं पहले से मौजूद सत्र चर का उपयोग कैसे कर सकता हूं? क्योंकि कमांड लाइन में जब मैं शून्य मान प्राप्त कर रहा हूं, लेकिन ब्राउज़र में सही मान प्राप्त करें। मेरा यूनिट परीक्षण कमांड लाइन के माध्यम से चलाया जाता है। –

+0

मैं उन विवरणों के साथ अपना उत्तर भर दूंगा। – Paul

+0

बहुत अधिक ... –

संबंधित मुद्दे