2016-04-20 4 views
0

私は、次の設定を使用して、私のsymfonyのアプリケーションにクエリキャッシュを有効にしている:機能テストでRedisクエリキャッシュに新しいレコードが作成されるのはなぜですか?

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" 

ドクトリンORMの設定私もよ

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キャッシュが表示されます。私は、データベースがすべてのテストが実行される前に再作成され、キャッシングに関する限り新しく作成された行の内容は重要ではないが、私は確信が持てません。

この予期した動作は誰でも知っていますか?

+0

あなたの質問は少し混乱に見えます。実際の単体テストでは、可能な限り小さなテスト可能なユニットをテストしているわけではないので、接続を模擬してしまいます。 –

+0

あなたは正しいです、私は実際に機能テストを意味しました。質問を編集します – Loupax

答えて

0

テスト環境でRedis(および必要のないすべての外部依存関係)を無効にする必要があります。これは、メモリー内のキャッシュのみを使用して、test envで構成をオーバーライドすることができます。

続きを読むには、環境と構成をたくさん、あなたはsymfonyのドキュメントに見ることができます:あなたはここでユニット・テストをやっていないので、http://symfony.com/doc/current/book/configuration.html#environment-configuration

+0

おそらく良い考えですが、それは私の質問に答えません。他のユーザーからの同様の回答を避けるために言及するだけです – Loupax

関連する問題