Я хочу изменить requestHandler.value
на 5
для моих функциональных тестов.Измените предопределенное значение на сервере перед функциональным тестом
При запуске пакета создание 1000
документов в db на самом деле не является вариантом, поэтому можно ли программно изменить его значение перед запуском пакета и затем выполнить его сброс? Я могу создать 5
документов в db перед тестом для работы.
Из грубого я могу заглушить countDocumentsInDb()
в модульных тестах, чтобы вернуть то, что мне нужно, но я упростил логику ниже ради вопроса.
app.js
:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var requestHandler = require('./lib/requestHandler.js');
var PORT = 4000;
app.route('/validate')
.get(function(req, res) {
requestHandler.process(req, res);
});
if (!module.parent) {
server.listen(PORT, function(err) {
if (err) {
return;
}
});
}
module.exports = app;
requestHandler.js
:
var requestHandler = {
value: 1000,
process: function(req, res) {
numberOfDocumentsInDb = countDocumentsInDb();
if (numberOfDocumentsInDb === this.value) {
res.send(true);
} else {
res.send(false);
}
}
};
module.exports = requestHandler;
FVT
тест стиль ..
var Promise = require('promise');
var request = require('supertest');
var chai = require('chai');
chai.should();
var server = require('../../app.js');
describe('app.js', function() {
describe('/validate', function() {
it('should return true if number of documents in db matches pre-defined value', function(done) {
var fvtPromise = new Promise(function(fulfill) {
request(server)
.get('/validate')
.expect(200)
.end(function(err, res) {
if (err) {
throw err;
}
res.body.should.equal(true);
fulfill(null);
});
});
fvtPromise.done(function() {
done();
});
});
});
});
Можете ли вы объяснить свой прецедент для жесткого кодирования 1000 на сервере? Ответ на этот вопрос изменит ответ, который я бы дал. – user3137190