Я использую mongoose со следующей схемой для ConfigItem:
var ConfigItem = new Schema({
name: {
type: String,
required: true
},
value: {
type: String,
required: false
},
date: {
type: Date,
required: false
},
user: {
type: String,
required: false
}
});
Далее у меня есть функция для сохранения документов в соответствии с этой схемой:
function createConfigItem(_name, _value, _date, _user, callback) {
var config = new ConfigItems({
name: _name,
value: _value,
date: _date,
user: _user
});
config.save(function handleSaveConfig(err) {
if(callback){
callback(err);
}
});
}
Далее у меня есть модульный тест (на основе мокко), который использует эту функцию следующим образом:
createConfigItem('sftpHost', '1.1.1.1', '2018-03-15 10:06:40.713', 'user1', callback);
Если я запускаю тест под mocha (см. Примечание 1), я получаю следующее на MongoDB:
> db.configitems.find()
{ "_id" : ObjectId("5af173b1f155a4bff29f3e35"), "name" : "sftpHost", "value" : "1.1.1.1", "date" : ISODate("2018-03-15T10:06:40.713Z"), "user" : "user1", "__v" : 0 }
что я и ожидаю.
Однако, если я запускаю с помощью istanbul через grunt (см. Примечание 2), чтобы получить отчет о покрытии, тот же вызов createConfigItem () создает следующие документы в БД:
> db.configitems.find()
{ "_id" : ObjectId("5af176cbcffb8cc20a1fe3c2"), "name" : "sftpHost", "value" : "1.1.1.1", "date" : ISODate("2018-03-15T09:06:40.713Z"), "user" : "user1", "__v" : 0 }
Обратите внимание, что в этом случае поле date
в БД сдвигается на один час относительно строкового параметра _date
.
Я думал, что это может быть как-то связано с часовыми поясами, но я обеспечил выполнение моего процесса в настройках UTC process.env.TZ = 'UTC'
.
Я немного растерялся ... Есть ли известная проблема, связанная с мангустами / ворчаниями / Стамбулом в отношении дат и / или часовых поясов? Любой намек на эту проблему, пожалуйста?
Примечание1 : использованная команда:
/home/fermin/.nvm/versions/node/v6.12.3/bin/node --debug-brk=50806 --expose_debug_as=v8debug /home/fermin/src/ctxmboard/node_modules/mocha/bin/_mocha --timeout 0 --ui bdd --reporter /home/fermin/.PyCharm2018.1/config/plugins/NodeJS/js/mocha-intellij/lib/mochaIntellijReporter.js --recursive /home/fermin/src/ctxmboard/test/back/unit
Примечание2 : использованная команда:
/home/fermin/.nvm/versions/node/v6.12.3/bin/node --debug-brk=33002 --expose_debug_as=v8debug ./node_modules/.bin/istanbul cover --root lib/ --dir site/coverage -- /home/fermin/.nvm/versions/node/v6.12.3/lib/node_modules/grunt-cli/bin/grunt test