私の機能テストでは、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