yiiapi/tests/framework/caching/CCacheDependencyTest.php

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php
Yii::import('system.caching.dependencies.CFileCacheDependency');

class CCacheDependencyTest extends CTestCase
{
    protected $_cacheDependentData=null;

    public function setCacheDependentData($cacheDependentData)
    {
        $this->_cacheDependentData = $cacheDependentData;
    }

    public function getCacheDependentData()
    {
        return $this->_cacheDependentData;
    }

    public function testReuseDependentData()
    {
        MockCacheDependency::$generateDependentDataCallback=array($this,'getCacheDependentData');
        $dependency1=new MockCacheDependency();
        $dependency1->reuseDependentData = true;
        $dependency2=new MockCacheDependency();
        $dependency2->reuseDependentData = true;

        CCacheDependency::resetReusableData();
        $this->setCacheDependentData('start');
        $dependency1->evaluateDependency();
        $dependency2->evaluateDependency();
        $this->assertFalse($dependency1->getHasChanged(),'Initial dependency1 changed!');
        $this->assertFalse($dependency2->getHasChanged(),'Initial dependency2 changed!');
        $this->assertEquals(1,MockCacheDependency::$generateDependentDataCalled,'Extra invokations of "generateDependentData()"!');

        // New request:
        CCacheDependency::resetReusableData();
        MockCacheDependency::$generateDependentDataCalled=0;
        $this->assertFalse($dependency1->getHasChanged(),'Dependency1 changed for new request!');
        $this->assertFalse($dependency2->getHasChanged(),'Dependency2 changed for new request!');
        $this->assertEquals(1,MockCacheDependency::$generateDependentDataCalled,'Extra invokations of "generateDependentData()"!');

        // New request:
        CCacheDependency::resetReusableData();
        MockCacheDependency::$generateDependentDataCalled=0;
        $this->setCacheDependentData('change1');
        $this->assertTrue($dependency1->getHasChanged(),'Dependency1 is not changed after source change!');
        $dependency1->evaluateDependency();

        // New request:
        CCacheDependency::resetReusableData();
        MockCacheDependency::$generateDependentDataCalled=0;
        $this->assertFalse($dependency1->getHasChanged(),'Dependency1 has been changed!');
        $this->assertTrue($dependency2->getHasChanged(),'Dependency2 has not been changed!');
        $this->assertEquals(1,MockCacheDependency::$generateDependentDataCalled,'Extra invokations of "generateDependentData()"!');
    }
}

class MockCacheDependency extends CCacheDependency
{
    public static $generateDependentDataCallback;
    public static $generateDependentDataCalled = 0;
后面还有 7 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。