est des Rails.cache purgé entre les tests?
Nous cache id/chemin d'accès en utilisant la cartographie Rails.cache
dans un des Rails 3.2 application. Sur certaines machines, il fonctionne bien, mais sur les autres valeurs sont fausses. La cause est difficile à suivre, j'ai donc quelques questions à propos de la Rails.cache
lui-même. Est-il purgé entre les tests? Est-il possible que les valeurs mises en cache dans le mode de développement est utilisé en mode test? Si ce n'est pas purgé, comment pourrais-je le faire avant de lancer les specs?
Le cache de mon store est la configuration est la suivante:
#in: config/environments/development.rb
config.cache_store = :memory_store, {:size => 64.megabytes}
#in: config/environments/production.rb
# config.cache_store = :mem_cache_store
- Il est
test
de l'environnement pour les tests. - Je le sais, mais j'ai juste ces deux entrées pour
config.cache_store
.
Vous devez vous connecter pour publier un commentaire.
Plus efficace (et plus facile) méthode consiste à définir l'environnement de test du cache à utiliser NullStore:
La NullStore assure que rien ne sera jamais mis en cache.
Par exemple, dans le code ci-dessous, il sera toujours tomber à travers le bloc et le retour à l'heure actuelle:
Également voir les Rails de la mise en Cache guide: http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-nullstore
Ajouter:
d'avoir le cache effacé avant chaque spec fichier est exécuté.
Ajouter:
d'avoir le cache effacé avant chaque spec.
Vous pouvez mettre à l'intérieur de
spec/spec_helper.rb
dans leRSpec.configure
bloc de l'avoir appliqué à l'échelle mondiale (recommandée au cours de diffusion par le fichier de spécification ou de cas).RSpec par défaut n'est pas évident que le cache automatiquement.
config.action_controller.perform_caching = false
semble simplement prévenir les de remplissage la cache.spec/spec_helper.rb
, vous aurez besoinconfig.before(:each) do blah end
au lieu debefore(:each) do blah end