5

Ich schreibe Integrationstests für Anwendungen geschrieben in NodeJS mit MongoDB.Wie wird MongoDB für Integrationstests in NodeJS eingerichtet?

Auf CI-Server möchte ich eine Art von eingebetteten MongoDB für schnellere Leistung und einfachere Kontrolle haben. Momentan habe ich MongoDB auf einem anderen Server, aber die Tests sind langsam. Vor jedem Test muss ich alle Sammlungen löschen. Ich benutze Mungo als ORM.

Bisher habe ich nur eingebettete MongoDB für Java gefunden.

+0

Sie könnten einfach eine dedizierte MongoDB-Instanz auf Ihrem CI-Server einrichten ... –

Antwort

0

Unser Team hat die Mongo Skin Calls ausgegraben. Abhängig von Ihren Test-Paketen können Sie das Gleiche tun. Es braucht ein bisschen Arbeit, aber es ist es wert. Erstellen Sie eine Stub-Funktion und erklären Sie dann einfach, was Sie in Ihrem Test benötigen.

// Object based stubbing 
    function createObjStub(obj) { 
     return { 
     getDb: function() { 
     return { 
      collection: function() { 
       var coll = {}; 

       for (var name in obj) { 
       var func = obj[name]; 

       if (typeof func === 'object') { 
        coll = func; 
       } else { 
        coll[name] = func; 
       } 
       } 

       return coll; 
      } 
      }; 
     } 
     } 
    }; 
    // Stubbed mongodb call 
     var moduleSvc = new ModulesService(createObjStub({ 
     findById: function(query, options, cb) { 
      return cb({ 
      'name': 'test' 
      }, null); 
      //return cb(null, null); 
     } 
     }),{getProperties: function(){return{get: function(){} }; } }); 
+0

Dies ist eine Möglichkeit, aber ich werde alle MongoDB-Prüfungen, Einschränkungen und Prozesse abschneiden. Wenn der Primärschlüssel eindeutig ist, gibt der zweite Schreibvorgang keinen Fehler zurück. Wenn es falsche Speicherung von Informationen, falsche Abfrage oder falsche Initialisierung gibt, werde ich das nicht bemerken. –

1

Nach den „nicht-Test Doppel für Typen verwenden Sie nicht besitzen“ -Prinzip, ziehen Sie eine echte MongoDB Instanz für Ihren Integrationstest fortzusetzen. Details finden Sie unter this nice article.