我想这是一个常见的问题,但我无法决定如何解决这个问题。
我有一个包含4个catch块的公共函数。在每个catch块中,其中一个私有方法被调用如下
public function updateInformation(){
try{
.....
}catch(Zend_Http_Client_Exception $e){
$this->somePrivateMethod1();
}catch(Zend_Service_Exception $e){
$this->somePrivateMethod2();
}catch(UnexpectedValueException $e){
$this->somePrivateMethod3();
}catch(Exception $e){
$this->somePrivateMethod4();
}
}
我正在编写测试用例来测试updateInformation()
函数。我也想测试异常块,这样我就可以测试私有方法了。我该如何实现这一目标?因此,代码覆盖率也不见了。
答案 0 :(得分:0)
您有一个依赖项抛出异常,以便您的代码将捕获它。
http://phpunit.de/manual/current/en/phpunit-book.html#test-doubles.stubs.examples.StubTest8.php
public function testThrowExceptionStub()
{
// Create a stub for the SomeClass class.
$stub = $this->getMock('SomeClass');
// Configure the stub.
$stub->method('doSomething')
->will($this->throwException(new Exception));
$sut = new Class($stub);
$sut->updateInformation();
//DO MORE ASSERTIONS ABOUT BEHAVIOR IN PRIVATE METHODS
}
}
我假设try
块中有一些东西需要被嘲笑。如果没有,那么你将类设置为满足条件,以便抛出异常。