PHPUnit onu alay edemez bu yüzden bir alay kullanarak başka bir sınıfın yöntemini çağıran bir sınıf yöntemi için bir birim test yazıyorum, çağrılması gereken tek yöntem, nihai olarak ilan edilir. Ben alabilir, farklı bir yaklaşım var mı?
Örnek:
alay sınıf
class Class_To_Mock
{
final public function needsToBeCalled($options)
{
...
}
}
Benim test case
class MyTest extends PHPUnit_Framework_TestCase
{
public function testDoSomething()
{
$alay = $this->getMock('Class_To_Mock', array('needsToBeCalled'));
$alay->expects($this->once())
->method('needsToBeCalled')
->with($this->equalTo(array('option'));
}
}
Edit: Mike B tarafından sağlanan çözümünü kullanarak ve size o (doğru nesne pasör geçirildi sağlamak için) tür denetimi yapmasının alay ediyorlar nesne için bir ayarlayıcı / getter varsa, size getter alay gerekir sınıfı test ediyoruz ve bu diğer alay dönün.
Örnek:
alay sınıf
class Class_To_Mock
{
final public function needsToBeCalled($options)
{
...
}
}
alay
class Class_To_MockMock
{
public function needsToBeCalled($options)
{
...
}
}
Test edilecek class
class Class_To_Be_Tested
{
public function setClassToMock(Class_To_Mock $classToMock)
{
...
}
public function getClassToMock()
{
...
}
public function doSomething()
{
$this->getClassToMock()
->needsToBeCalled(array('option'));
}
}
Benim test case
class MyTest extends PHPUnit_Framework_TestCase
{
public function testDoSomething()
{
$classToTest = $this->getMock('Class_To_Be_Tested', array('getClassToMock'));
$alay = $this->getMock('Class_To_MockMock', array('needsToBeCalled'));
$classToTest->expects($this->any())
->method('getClassToMock')
->will($this->returnValue($alay));
$alay->expects($this->once())
->method('needsToBeCalled')
->with($this->equalTo(array('option'));
$classToTest->doSomething();
}
}