我想测试调用exec()
的php函数,最好的方法是什么?我用它来获得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()
。知道怎么样?
答案 0 :(得分:2)
如果您使用名称空间,那么 mock 内置函数就有一个技巧,如下所述:https://stackoverflow.com/a/5337635/664108
所以,基本上你可以用你自己的函数替换exec
,它的返回值将由你的测试指定。