Bu tabii ki, eski bir soru ama benim önerim daha sonra taklit ayrı bir yönteme die()
'nin kodunu taşımak olacaktır.
As an example, instead of having this:
class SomeClass
{
public function do()
{
exit(1);
// or
die('Message');
}
}
Bu do:
class SomeClass
{
public function do()
{
$this->terminate(123);
// or
$this->terminate('Message');
}
protected function terminate($code = 0)
{
exit($code);
}
// or
protected function terminate($message = '')
{
die($message);
}
}
Bu şekilde kolayca terminate
yöntemini taklit edebilir ve komut onu yakalamak mümkün olmadan sonlandırma konusunda endişelenmenize gerek yok.
Test, bu gibi bir şey olacaktır:
class SomeClassTest extends \PHPUnit_Framework_TestCase
{
/**
* @expectedExceptionCode 123
*/
public function testDoFail()
{
$mock = $this->getMock('SomeClass');
$mock->expects($this->any())
->method('terminate')
->will($this->returnCallback(function($code) {
throw new \Exception($code);
}));
// run to fail
$mock->do();
}
}
Ben kodu test değil ama bir çalışma durumuna oldukça yakın olmalıdır.