Ich versuche, einen Test zu schreiben, um eine Methode zu testen, die zu mongo verbindet, aber ich möchte nicht tatsächlich mongo laufen lassen und tatsächlich eine Verbindung zu ihr herstellen, um meine Tests erfolgreich durchlaufen zu lassen.Wie testet man eine Methode, die sich mit Mongo verbindet, ohne tatsächlich eine Verbindung zu Mongo herzustellen?
Hier ist mein aktueller Test, der erfolgreich ist, wenn mein Mongo-Daemon läuft.
describe('with a valid mongo string parameter', function() {
it('should return a rejected promise', function(done) {
var con = mongoFactory.getConnection('mongodb://localhost:27017');
expect(con).to.be.fulfilled;
done();
});
});
mongoFactory.getConnection Code:
getConnection: function getConnection(connectionString) {
// do stuff here
// Initialize connection once
MongoClient.connect(connectionString, function(err, database) {
if (err) {
def.reject(err);
}
def.resolve(database);
});
return def.promise;
}
Ein guter Grund, warum ich das will, ist, dass meine Unit-Tests alle darauf angewiesen sind, tatsächlich mit Mongo zu verbinden, so dass sie fehlschlagen, wenn Mongod nicht läuft. Was bedeutet, dass sie alle versagen, wenn sie zum Beispiel auf travis ci gebaut werden. – Catfish
möglich Duplikat von: http://stackoverflow.com/questions/12526160/mocking-database-in-node-js und http://stackoverflow.com/questions/10378116/mock-test-mongodb-database-node-js – zamnuts
keine Erfahrung damit, aber auf den ersten Blick Sinon.JS könnte helfen, Stubs und Mocks zu verwenden: https://www.npmjs.org/package/sinon – zamnuts