2013-05-30 4 views
37

मुझे यह जांचने की आवश्यकता है कि कोई चर उपयोगकर्ता प्रकार का ऑब्जेक्ट है या नहीं। उपयोगकर्ता मेरी कक्षा $user मेरी वस्तुPHPUnit: assertInstanceOf() काम नहीं कर रहा

$this->assertInstanceOf($user,User); 

यह काम नहीं कर रहा है, मैं अपरिभाषित निरंतर उपयोगकर्ता का एक प्रयोग है - आपकी मदद के लिए अग्रिम में ग्रहण 'उपयोगकर्ता'

धन्यवाद

उत्तर

88

http://apigen.juzna.cz/doc/sebastianbergmann/phpunit/function-assertInstanceOf.html

मुझे लगता है कि आप इस फ़ंक्शन को गलत इस्तेमाल कर रहे हैं। प्रयास करें:

$this->assertInstanceOf('User', $user); 
+22

की [पीएचपी 5.5] (http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name) के रूप में आप यह वाक्य रचना का उपयोग कर सकते '$ this-> assertInstanceOf (उपयोगकर्ता :: कक्षा, $ उपयोगकर्ता);'। – james2doyle

5

या आप की तरह कुछ का उपयोग कर सकते हैं:

$this->assertInstanceOf(get_class($expectedObject), $user); 

जब मैं अर्थात जाँच कर रहा हूँ अगर सेटर विधि स्वयं के संदर्भ में लौटा रहा है मैं आमतौर पर इस का उपयोग करें।

$testedObj = new ObjectToTest(); 
$this->assertInstanceOf(
    get_class($testedObj), 
    $testedObj->setSomething('someValue'), 
    'Setter is not returning $this reference' 
); 
+1

PHP 5.6 का उपयोग करके, आप ':: class' स्थिर विधि का उपयोग कर सकते हैं, जैसे: ' $ this-> assertInstanceOf (ऑब्जेक्टटॉस्ट :: क्लास, $ testObj-> setSomething ('someValue') ' – marcegarba

+2

दरअसल, 'SomeClass :: वर्ग की सुविधा [PHP 5.5] में जोड़ा गया था (http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name) – james2doyle

+0

हां, ज़ाहिर है, लेकिन यह मुझे कोई समस्या नहीं है। php संस्करण 5.4 और निम्न का उपयोग करने वाली सेवाएं कुल php उपयोगों (संगीतकार आंकड़ों के अनुसार) के 10% से कम हैं https://seld.be/notes/php-versions-stats-2016-1- संस्करण –

6

यह हमेशा एक अच्छा विचार भी आप कर सकते हैं ::class उपयोग करने के लिए है। यदि आप इस मानक में उपयोग करते हैं, तो आपको एफक्यूसीएन (पूरी तरह से योग्य क्लासनाम) का उपयोग करने की ज़रूरत नहीं है, या बैकस्लाश से बचें। साथ ही, आईडीई बेहतर कार्यक्षमता प्रदान करते हैं यदि उन्हें पता है कि User यहां केवल एक स्ट्रिंग नहीं बल्कि एक वर्ग है।

$this->assertInstanceOf(User::class, $user); 
संबंधित मुद्दे