public static function flush_cache()
{
static::$_cached_objects[get_class()] = array();
}
我不知道如何用phpunit测试这个? 该项目是一个Fuelphp框架。 你能提出一些建议而不是践踏我的问题吗? 非常感谢
答案 0 :(得分:2)
没有“正确”的方法来测试它。原因是:你有全球状态!
测试静态值非常困难,因为它们在单元测试之间共享状态(在一次测试运行期间)。因此,一个单元测试可能会干扰另一个单元测试,单元测试的执行顺序变得很重要。
您应该将缓存传递给函数(如依赖注入),而不是使用静态值(除了全局状态之外)。在那种情况下,你会有这样的事情:
public static function flush_cache($cache) {
$cache = array();
}
// the test function
public function testFlushCache() {
$myCache = $array();
// do something which uses the cache, filling up some values.
flush_cache($myCache);
$this->assertEquals(count($myCache), 0);
}
当然,您还必须注意在应用程序中实例化缓存。
但我强烈建议避免全局状态,如静态缓存(尽管静态函数是可以的)。拥有全局状态会对PITA进行测试,并且也可能成为奇怪错误的来源,因为每个接入全局变量的函数都会变得不确定。