क्या नकली वर्ग बनाने के लिए एक नकली वर्ग बनाने का कोई तरीका है, phpunit के साथ? मैं निर्भरता इंजेक्शन करने का एक तरीका ढूंढ रहा हूं बिना किसी ऑब्जेक्ट को किसी ऑब्जेक्ट को रचनात्मक (या कहीं भी) में काम करने की आवश्यकता हो सकती है। कुछ है कि वापस आ जाएगी इन सभी मामलों के लिए "सही":phpunit के साथ एक नकली कक्षा बनाएँ?
public function testAAAA()
{
$foo = $this->getMock('foo', array('bar'));
var_dump(class_exists('foo', false));
var_dump(method_exists('foo', 'bar'));
var_dump(method_exists($foo, 'bar'));
}
यह प्रिंट:
bool(true)
bool(false)
bool(true)
यह दर्शाता है कि जब यह सफलतापूर्वक एक नकली 'foo' वर्ग बनाया था यह एक 'बार बाँध नहीं था 'इसके लिए विधि।
मैं phpunit 3.7.5 का उपयोग कर रहा हूँ।
मैं यह नहीं कहूंगा कि मैं यह करना चाहता हूं, लेकिन मुझे यही करना चाहिए। मुझे एक नकली वस्तु उत्पन्न करने में सक्षम होना चाहिए जो परीक्षण के अंदर किए गए कॉल का जवाब देगा, बिना वास्तविक फ़ाइलों को जोड़ने के लिए हजारों फाइलों को बदले बिना। यह getMockBuilder विधि मुझे बंद कर देता है, लेकिन ऐसा लगता है कि phpunit खराब eval कोड उत्पन्न करता है जब इसे नामांकित मॉक क्लास नाम (जिसे मैं उपयोग कर रहा हूं, मुझे मूल पोस्ट में उल्लेख किया जाना चाहिए) के साथ कहा जाता है। –
'get_ockas '(' foo ',' quux \ baz ')'' getMock() 'कॉल के बाद' class_alias' 'पर कॉल जोड़ें, और फिर' quux \ baz' के विरुद्ध परीक्षण करें। उस ने कहा, मुझे लगता है कि आप मूल रूप से उस बिंदु पर हैं जहां आप PHPUnit को पैच करने पर विचार करना चाहते हैं, या फ्लाई पर ऑब्जेक्ट या क्लास में विधियों को जोड़ने की प्रतिबिंब क्लास और प्रतिबिंब ऑब्जेक्ट की क्षमता का उपयोग करना चाहते हैं, और आप किनारे के मामलों को मारने जा रहे हैं। यह ऐसा क्षेत्र नहीं है जहां PHP चमकता है। इसके अलावा, अगर आपने इसे नहीं पढ़ा है, तो आपको * माइकल फेदर द्वारा "विरासत संहिता के साथ प्रभावी ढंग से कार्य करने" की एक प्रति * की आवश्यकता है। – jeremiahd
धन्यवाद। मैं class_alias कोशिश करेंगे। मैं PHPUnit को पैच करने पर भी देख रहा हूं, जो टेम्पलेट को एक eval() में उपयोग करता है। पुस्तक के अनुसार, मालिकों को पढ़ने के लिए मुझे वास्तव में क्या चाहिए। :) –