मैं सभी ओवरराइड विधियों के लिए डिफ़ॉल्ट मानों के साथ सेटअप में एक नकली उदाहरण बनाने की कोशिश कर रहा हूं और फिर कई अलग-अलग परीक्षणों में कुछ तरीकों के लिए वापसी मूल्य बदलता हूं जो कि मैं सेट अप किए बिना परीक्षण कर रहा हूं पूरे मॉक क्या इसे करने का कोई तरीका है?क्या मैं इसे सेट करने के बाद PHPUnit Mock पर कोई विधि बदल सकता हूं?
यही मैंने कोशिश की, लेकिन मूर्ख दृष्टिकोण काम नहीं करता है। विधि अभी भी मूल अपेक्षा सेटअप से मूल्य लौटाती है।
पहले स्थापना:
$my_mock->expects($this->any())
->method('one_of_many_methods')
->will($this->returnValue(true));
एक और परीक्षण में एक अलग ज़ोर से पहले:
$my_mock->expects($this->any())
->method('one_of_many_methods')
->will($this->returnValue(false));
इस सवाल का डुप्लिकेट: PHPUnit Mock Change the expectations later, लेकिन है कि एक कोई प्रतिक्रियाएं मिल गया और मैंने सोचा कि एक नया सवाल लाने सकता है सामने मुद्दा।
/**
* @dataProvider methodValueProvider
*/
public function testMethodReturnValues($method, $expected) {
// ...
$my_mock->expects($this->any())
->method($method)
->will($this->returnValue($expected));
// ...
}
public function methodValueProvider() {
return array(
array('one_of_many_methods', true),
array('another_one_of_many', false)
);
}
संपादित करें::
दुर्भाग्य से phpunit के साथ ऐसी कोई संभावना नहीं है। आप उदाहरण के लिए $ my_mock -> __ phpunit_hasMatchers() का उपयोग कर सकते हैं, लेकिन यह वही नहीं है जो आप चाहते हैं। बेशक आप एक ही विधि पर एक ही विधि पर अलग-अलग रिटर्न वैल्यू सेट कर सकते हैं) "पर" मैचर या बी) "रिटर्न कॉलबैक" लेकिन वे ए) पर निर्भर करते हैं) कॉल पैरामीटर .. लेकिन यह भी नहीं है कि आप क्या खोज रहे हैं। मैं आपको बता दूंगा कि मैं कुछ नया पता लगाता हूं। – Cyprian
यह भी देखें http://stackoverflow.com/questions/5484602/mock-in-phpunit-multiple-configuration-of-the-same-method-with-different-argum/5484864#5484864 – bishop