我在节点上有一个快速应用,它使用存储库来掩盖猫鼬模型的使用。
route.js
router.get('/', function (req, res) {
entries = entryRepository.findAll({}, function (rest, entries) {
res.render('entries/index', {entries: entries});
});
});
Entry-repository.js
class EntryMongoRepository {
constructor() {
console.log('lskjfd');
mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_CONNECTIONG);
this.Entry = mongoose.model('Entry', entrySchema);
this.con = mongoose.connection
}
insert(data) {
this.con.collection('entries').insert(data);
}
insertSeed() {
var entry = {
content: "lalalal",
date: Date.now(),
locations: [
{
type: 'Feature',
coordinates: [52.102095, 5.098283],
properties: {'name': 'Hallo'}
},
{
type: 'Feature',
coordinates: [52.126178, 5.157987],
properties: {'name': 'Hallo'}
}]
};
this.con.collection('entries').insert(entry);
}
findAll(params, cb) {
return this.Entry.find({}).exec(cb);
}
}
现在。我想测试这条路线。因此,我想模拟存储库,因为我可能可以对它进行单独的单元测试(我认为是)。所以我做了以下(没用的)
EntryRepository
EntryRepositoryStub
这是目前的测试,没有proxyquire,因为它没有用。有什么想法吗?
test.js
//During the test the env variable is set to test
process.env.NODE_ENV = 'test';
// require dev-dependencies
const request = require('supertest');
const route = require('../routes/entries'); //reference to you app.js file
var express = require('express');
var app = express();
route(app);
describe('GET /users', function () {
it('should respond on the test case', function (done) {
request(app)
.get('/entries/test')
.expect(200, done);
});
it('Should 404 on unknown page', function (done) {
request(app)
.get('/entries/thisisnotapage')
.expect(404, done);
});
});
我如何在无需通过测试数据库的情况下对这条路线进行单元测试?