1

我想这是一个常见问题,但我无法决定如何解决这个问题。

我有一个有 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()功能。我也想测试异常块,这可以让我测试私有方法(也)。我如何实现这一目标?因此,代码覆盖率也被折腾了。

4

1 回答 1

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块中有一些东西需要被嘲笑。如果没有,那么您设置类以便满足条件以便抛出异常。

于 2014-07-21T19:36:02.033 回答