Wie würde ich die Datenbank in meiner Anwendung node.js verspotten, die in diesem Fall mongodb
als Backend für eine Blog-REST-API verwendet wird?
Sicher, ich könnte die Datenbank auf eine bestimmte Datenbank testing
einstellen, aber ich würde trotzdem Daten speichern und nicht nur meinen Code, sondern auch die Datenbank testen, also mache ich eigentlich keine Unit-Tests, sondern Integrationstests.
Was soll man also tun? Erstellen Sie Datenbank-Wrapper als mittlere Ebene zwischen Anwendung und Datenbank und ersetzen Sie die DAL beim Testen?
// app.js
var express = require('express');
app = express(),
mongo = require('mongoskin'),
db = mongo.db('localhost:27017/test?auto_reconnect');
app.get('/posts/:slug', function(req, res){
db.collection('posts').findOne({slug: req.params.slug}, function (err, post) {
res.send(JSON.stringify(post), 200);
});
});
app.listen(3000);
// test.js
r = require('requestah')(3000);
describe("Does some testing", function() {
it("Fetches a blogpost by slug", function(done) {
r.get("/posts/aslug", function(res) {
expect(res.statusCode).to.equal(200);
expect(JSON.parse(res.body)["title"]).to.not.equal(null);
return done();
});
});
));