我刚刚开始编写测试用例,不确定如何处理某些测试。我正在测试的类,用非常基本的术语来说,是各种操作码缓存的包装器。测试将被捆绑到软件中,这些软件将被下载并在许多不同的主机上使用,因此我对如何处理这些类的测试感到困惑,原因有两个。
以这个 apc 包装器为例
class Storage_Container_Apc extends Storage_Container implements Storage_iContainer
{
protected $_id_prefix = '';
protected $_file_prefix = '';
function __construct($id_prefix='', $file_prefix='', $options=array())
{
$this->_id_prefix = $id_prefix;
$this->_file_prefix = $file_prefix;
}
/**
* @see Storage_iContainer::available
*/
public static function available()
{
return extension_loaded('apc') && ini_get('apc.enabled');
}
}
还有这个基本的测试用例。
class StorageContainerApcTest extends \PHPUnit_Framework_TestCase
{
public function testAvailability()
{
$this->assertTrue(Storage_Container_Apc::available());
}
}
在没有 APC 的系统上,这个测试显然会失败,但它当然不是真正的失败,因为该类是模块相关的,如果它在系统上不可用,则不会使用它。因此,对于这一点,测试实际上应该是什么,以便它返回 ok。会是这样吗?
class StorageContainerApcTest extends \PHPUnit_Framework_TestCase
{
public function testAvailability()
{
if(extension_loaded('apc') && ini_get('apc.enabled'))
{
$this->assertTrue(Storage_Container_Apc::available());
}
else
{
$this->assertFalse(Storage_Container_Apc::available());
}
}
}
我的最后一个问题涉及如何通过测试来测试这些操作码包装器。因为不可能在任何给定时间运行多个操作码?
非常感谢您的任何指点。