में नकली ऑब्जेक्ट्स बनाना मैंने खोजा है लेकिन मैं जो खोज रहा हूं उसे काफी नहीं मिल सकता है और मैनुअल इस संबंध में बहुत मदद नहीं करता है। मैं यूनिट परीक्षण के लिए बिल्कुल नया हूं, इसलिए सुनिश्चित नहीं है कि मैं सही रास्ते पर हूं या नहीं। वैसे भी, सवाल पर।PHP इकाई
<?php
class testClass {
public function doSomething($array_of_stuff) {
return AnotherClass::returnRandomElement($array_of_stuff);
}
}
?>
अब, स्पष्ट रूप से मैं AnotherClass::returnRandomElement($array_of_stuff);
चाहते एक ही बात हर बार वापस जाने के लिए: मैं एक वर्ग है। मेरा सवाल है, मेरे यूनिट टेस्ट में, मैं इस ऑब्जेक्ट को कैसे नकल कर सकता हूं?
मैंने परीक्षण फ़ाइल के शीर्ष पर AnotherClass
जोड़ने का प्रयास किया है, लेकिन जब मैं AnotherClass
का परीक्षण करना चाहता हूं तो मुझे "कक्षा को पुन: वर्गीकृत नहीं किया जा सकता" त्रुटि मिलती है।
मुझे लगता है कि मैं कारखाने के वर्गों को समझता हूं, लेकिन मुझे यकीन नहीं है कि मैं इस उदाहरण में कैसे आवेदन करूंगा। क्या मुझे एक पूरी तरह से पृथक एक और क्लास क्लास लिखना होगा जिसमें टेस्ट डेटा था और फिर फैक्ट्री क्लास का उपयोग वास्तविक अदरक्लास के बजाय लोड करने के लिए करें? या सिर्फ एक लाल हेरिंग फैक्टरी पैटर्न का उपयोग कर रहा है। सेटअप() फ़ंक्शन में
$RedirectUtils_stub = $this->getMockForAbstractClass('RedirectUtils');
$o1 = new stdClass();
$o1->id = 2;
$o1->test_id = 2;
$o1->weight = 60;
$o1->data = "http://www.google.com/?ffdfd=fdfdfdfd?route=1";
$RedirectUtils_stub->expects($this->any())
->method('chooseRandomRoot')
->will($this->returnValue($o1));
$RedirectUtils_stub->expects($this->any())
->method('decodeQueryString')
->will($this->returnValue(array()));
, लेकिन इन स्टब्स अनदेखी कर रहे हैं और मुझे लगता है कि क्या यह कुछ मैं गलत कर रहा हूँ, या जिस तरह से मैं कर रहा हूँ तक पहुँचने से काम नहीं कर सकते हैं:
मैं इस कोशिश की AnotherClass
विधियां।
सहायता! यह मुझे पागल कर देता है।
शानदार, प्रतिक्रिया के लिए धन्यवाद। हालांकि एक सवाल; इसलिए, मुझे अपनी फैक्टरी कक्षा मिली है, जो मेरे लिए सभी उदाहरण बनाती है। यह वह वर्ग है जो उत्पादन में जाता है। क्या मैं इस वर्ग में नकली वस्तु सामान जोड़ता हूं, या क्या मैं मुख्य कारखाना वर्ग को उत्पादन के रूप में छोड़ देता हूं, फिर unittests के लिए एक नया कारखाना वर्ग जोड़ें? – Mike
आपको रीयलिल करता है। आप परीक्षण के लिए या तो एक नया कारखाना वर्ग बना सकते हैं, या आप यह सुनिश्चित कर सकते हैं कि आपने परीक्षण के बाद अपनी फैक्टरी कक्षा को साफ़ कर लिया है। –