【发布时间】:2012-09-13 14:50:24
【问题描述】:
如何在我的 node.js 应用程序中模拟数据库,在本例中使用 mongodb 作为博客 REST API 的后端?
当然,我可以将数据库设置为特定的testing -database,但我仍然会保存数据而不是只测试我的代码,还要测试数据库,所以我实际上不是在做单元测试,而是在做集成测试。
那么一个人应该怎么做呢?创建数据库包装器作为应用程序和数据库之间的中间层并在测试时替换 DAL?
// 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();
});
});
));
【问题讨论】:
标签: node.js mongodb unit-testing mocking database