2017-03-14 4 views
3

J'ai une application de noeud avec l'accès à mongodb lancé mongoose testé avec moka et mockgoose. J'ai déménagé récemment à mockgoose 7.0.5. J'ai suivi la mise en route sur github et j'ai augmenté mon timeout de moka à 2 minutes.Mockgoose télécharge 234mb lors de l'exécution mockgoose.prepareStorage

Voici mes fonctions avant dans mes tests:

import mongoose from 'mongoose'; 
var Mockgoose = require('mockgoose').Mockgoose; 
[...] 

const mockgoose = new Mockgoose(mongoose); 

before(function(done) { 
    try { 
    console.log('BEFORE prepareStorage'); 
    mockgoose.prepareStorage().then(() => { 
    console.log('IN prepareStorage'); 
     mongoose.connect('mongodb://example.com/TestingDB', function(err) { 
     done(err); 
     }); 
    }).catch((error) => { 
     done(error); 
    }); 
    } catch(e) { 
    done(e); 
    } 
    console.log('AFTER prepareStorage'); 
}); 

beforeEach(function(done) { 
    mockgoose.helper.reset(); 
    done(); 
}); 

Quand je lance les essais, au cours de l'étape mockgoose.prepareStorage, mockgoose semble être le téléchargement de quelque chose.

BEFORE prepareStorage 
AFTER prepareStorage 
Completed: 0.1 % (0.2mb/234.3mb 

Je suppose que cela a quelque chose à voir avec le délai d'attente de 2 minutes demandé.

Mes questions/problèmes sont:

  • Quelqu'un sait-il ce que mockgoose télécharge? (Je ne me souviens pas de ce comportement avec les versions précédentes de mockgoose)

  • Est-ce que mockgoose a besoin de ce téléchargement à chaque exécution (test de npm) ou le résultat sera-t-il réutilisé dans les prochaines exécutions (test de npm)? Puis-je l'empêcher de télécharger quelque chose?

  • Idéalement, je voudrais lancer mon test d'unité dans un bac à sable env, sans accès au web (dans un docker). Puis-je télécharger le 234mb quelque part et demander à mockgoose de le réutiliser?

Merci

Répondre

2

Je suis sûr que ce soit un problème avec l'étape post-installation de mockgoose 7, bien que je ne peux pas clouer exactement ce. Revenir à mockgoose^6.0.0 résout ce problème.

Mise à jour

Le problème est que la première fois mockgoose fonctionne, il doit télécharger la source de MongoDB, cela peut prendre un certain temps. Vous devriez essayer de mettre à jour votre temps d'attente sur vos tests pour quelque chose de long (5-10 minutes). Cela a résolu le problème. Heureusement, cela n'est requis qu'une seule fois.

+0

Bonjour, merci pour votre réponse. Ce comportement provient de l'utilisation de mongodb-download dans mongodb-prebuild. Vous avez raison sur le fait que je peux le télécharger avec un premier test de npm sur mon poste de développement. Le problème est que, je voudrais exécuter mes tests unitaires en intégration continue sans accès au web. Je vais essayer de jouer avec mongodb-download pour le pré-télécharger. Je vous tiendrai au courant –