Zeyilname olarak, expects()
benim alay nesnesine çağırır ve sonra kurucusunu çağırmak takmak istedim. PHPUnit 3.7.14, aramak, döndürülen nesne disableOriginalConstructor()
anlamıyla bir nesnedir.
// Use a trick to create a new object of a class
// without invoking its constructor.
$object = unserialize(
sprintf('O:%d:"%s":0:{}', strlen($className), $className)
Ne yazık ki, PHP 5.4 onlar kullanmadığınız yeni bir seçenek var:
ReflectionClass::newInstanceWithoutConstructor
Bu mevcut değildi çünkü, ben elle sınıfı yansıtacak ve daha sonra kurucu çağırmak zorunda kaldı.
$mock = $this->getMockBuilder('class_name')
->disableOriginalConstructor()
->getMock();
$mock->expect($this->once())
->method('functionCallFromConstructor')
->with($this->equalTo('someValue'));
$reflectedClass = new ReflectionClass('class_name');
$constructor = $reflectedClass->getConstructor();
$constructor->invoke($mock);
functionCallFromConstruct
protected
ise, özellikle setMethods()
korunan yöntem alay böylece kullanmak zorunda, unutmayın. Örnek:
$mock->setMethods(array('functionCallFromConstructor'));
setMethods()
expect()
çağrısından önce çağrılması gerekir. Şahsen ben getMock()
disableOriginalConstructor()
sonra ancak önce bu zinciri.