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.