を呼び出すphp関数をテストしたいのですexec()
が、それを行う最良の方法は何ですか? 私はそれを使用して次の結果を取得しますgit describe
。
class Version
{
public function getVersionString()
{
$result = exec('git describe --always');
if (false !== strpos($result, 'fatal')) {
throw new RuntimeException(sprintf(
'Git describe returns error: %s',
$result
));
}
return $result;
}
}
したがって、コマンドが実行され、エラーが発生すると例外がスローされるかどうかをテストしたいと思います(つまり、「予期される」動作と「例外的な」動作)。
class VersionTest extends PHPUnit_Framework_TestCase
{
public function testVersionResultsString()
{
$version = new Version();
$result = $version->getVersionString();
$this->assertEquals('...', $result);
}
public function testVersionResultHasFatalErrorThrowsException()
{
// trigger something that will cause the fatal
$this->setExpectedException('RuntimeException');
$version = new Version();
$result = $version->getVersionString();
}
}
もちろん、クラスとテストは実際にはもう少し複雑ですが、本質はexec()
どこかをキャプチャすることです。方法はありますか?