为什么功能测试会在我的Redis查询缓存上创建新记录?

时间:2016-04-20 07:06:56

标签: caching redis symfony

我刚刚使用以下配置在我的symfony应用程序上启用了查询缓存:

Doctine缓存配置

doctrine_cache:
    providers:
        cache:
            namespace: '%cache_namespace%'
            chain:
                providers:
                    - array_cache
                    - redis_cache
                    - file_cache
        redis_cache:
            namespace: '%cache_namespace%'
            predis:
                host: "%redis_host%"
                port: "%redis_port%"
                password: "%redis_password%"
                timeout: "%redis_timeout%"
        array_cache:
            namespace: '%cache_namespace%'
            array: ~
        file_cache:
            namespace: '%cache_namespace%'
            file_system:
                directory: "%kernel.cache_dir%/application"

Doctrine ORM config

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    entity_managers:
        an_entity_manager:
            connection: connection
            mappings:
                AppBundle: ~
            naming_strategy: doctrine.orm.naming_strategy.underscore
            metadata_cache_driver:
                type: service
                id: "doctrine_cache.providers.cache"
            query_cache_driver:
                type: service
                id: "doctrine_cache.providers.cache"
            result_cache_driver:
                type: service
                id: "doctrine_cache.providers.cache"

我还有功能测试,填充本地sqlite数据库而不是真实数据库。我所看到的是以下内容:

每次运行测试时,我都会看到Redis缓存即使对于相同的记录也会创建新密钥。我猜测这一定是因为数据库在每次测试执行之前都会被重新创建,而新创建的行的内容就缓存而言并不重要,但我无法做到这一点。一定不会。

有人知道这种预期的行为吗?

1 个答案:

答案 0 :(得分:0)

您应该在测试环境中禁用Redis(以及所有不必要的外部依赖项)。这可以通过仅使用内存缓存来覆盖测试环境中的配置。

要阅读更多丰富的环境和配置,您可以查看Symfony文档:http://symfony.com/doc/current/book/configuration.html#environment-configuration