PHPUnit - 使用缓存开/关运行所有测试两次?

时间:2012-09-26 08:18:45

标签: php unit-testing phpunit

我想确保我的代码始终按预期工作,无论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();,一次是没有。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:8)

一种选择是创建一个MyClassNoCacheTest,其范围从MyClassTest延伸,只是覆盖(或实施)setUp

中的MyClassNoCacheTest方法