क्या अक्षम कन्स्ट्रक्टर के साथ एक मॉक ऑब्जेक्ट बनाना और मैन्युअल रूप से संरक्षित गुण सेट करना संभव है?phpunit - mockbuilder - सेट मॉक ऑब्जेक्ट आंतरिक प्रॉपर्टी
यहाँ एक मूर्खतापूर्ण उदाहरण है:
class A {
protected $p;
public function __construct(){
$this->p = 1;
}
public function blah(){
if ($this->p == 2)
throw Exception();
}
}
class ATest extend bla_TestCase {
/**
@expectedException Exception
*/
public function testBlahShouldThrowExceptionBy2PValue(){
$mockA = $this->getMockBuilder('A')
->disableOriginalConstructor()
->getMock();
$mockA->p=2; //this won't work because p is protected, how to inject the p value?
$mockA->blah();
}
}
तो मैं पी मूल्य जो सुरक्षित है इंजेक्षन करना चाहते हैं, तो मैं नहीं कर सकता। क्या मुझे सेटर या आईओसी परिभाषित करना चाहिए, या मैं इसे phpunit के साथ कर सकता हूं?
सिर्फ रिकॉर्ड के लिए - यदि आप गैर-सार्वजनिक एपीआई का परीक्षण कर रहे हैं, तो आप इसे गलत कर रहे हैं। यूनिट परीक्षण परीक्षण के व्यवहार के बारे में है, आंतरिक कार्यान्वयन नहीं। –