我想确保我的代码始终按预期工作,无论memcached服务器是否可用。
我的大多数功能都是这样的:
function foo($parameter,$force = FALSE)
{
$result = Cache::get('foo_'.$parameter);
if (empty($result) || $force)
{
// Do stuff with the DB...
$result = "something";
Cache::put('foo_'.$parameter,$result,$timeout);
}
return $result;
}
现在在TestCase中我正在这样做:
class MyClassTest extends PHPUnit_Framework_TestCase {
function testFoo()
{
$result = $myClass->foo($parameter);
$this->assertSomething($result);
}
}
我可以在PHPUnit的setUp()
期间全局禁用缓存,如下所示:
class MyClassTest extends PHPUnit_Framework_TestCase {
protected function setUp()
{
Cache::disable();
}
}
致电Cache::disable()
后,对Cache::get()
的所有来电都会在该请求期间返回false
。现在,我想在这个课程中运行两次所有测试,一次是Cache::disable();
,一次是没有。
关于如何做到这一点的任何想法?
答案 0 :(得分:8)
一种选择是创建一个MyClassNoCacheTest
,其范围从MyClassTest
延伸,只是覆盖(或实施)setUp
MyClassNoCacheTest
方法