2016-04-20 3 views
0

Ich habe die folgende Konfiguration verwenden:Warum erstellt der Funktionstest neue Datensätze in meinem Redis Query Cache? nur aktiviert Query-Caching auf meine symfony Anwendung

Doctine Cache Config

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" 

Lehre 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" 

Ich bin auch mit Funktionstests, die eine lokale sqlite-Datenbank statt der echten füllen. Was ich sehe, ist folgendes:

Jedes Mal, wenn ich meine Tests ausführen, sehe ich den Redis-Cache erstellen neue Schlüssel auch für identische Datensätze. Ich vermute, das muss sein, weil die Datenbank neu erstellt wird, bevor jeder Test ausgeführt wird, und der Inhalt der neu erstellten Zeilen spielt keine Rolle, was das Caching betrifft, aber ich kann nicht sicher sein.

Weiß jemand, ob dieses erwartete Verhalten?

+0

sieht Ihre Frage ein wenig verwirrend, weil man hier nicht Komponententests tun. In einem echten Komponententest würden Sie Ihre Verbindung verspotten, weil Sie das nicht testen, sondern Ihre kleinste testbare Einheit. –

+0

Sie haben recht, ich meinte eigentlich Funktionstests. Will die Frage bearbeiten – Loupax

Antwort

0

Sie sollten Redis (und alle unnötigen externen Abhängigkeiten) in Ihrer Testumgebung deaktivieren. Dies könnte geschehen, indem Sie Ihre Konfiguration in der Testumgebung überschreiben und nur den In-Memory-Cache verwenden.

Um mehr gibt es zuhauf Umgebungen und Konfiguration zu lesen, können Sie die Symfony docs suchen in: http://symfony.com/doc/current/book/configuration.html#environment-configuration

+0

Möglicherweise eine gute Idee, aber es beantwortet meine Frage nicht. Nur erwähnen, um mögliche ähnliche Antworten von anderen Benutzern zu vermeiden – Loupax

Verwandte Themen