【发布时间】:2018-06-03 13:43:57
【问题描述】:
在此之前,感谢您提供的任何帮助/建议!
我正在努力实现的目标
在创建 Mongoose 模型的实例时,我正在尝试寻找一种优雅的方式来测试日期/时间。
我想确保存储的时间是正确的。
我的模型目前看起来像这样:
const messageSchema = mongoose.Schema({
user: { type: String, required: true },
message: { type: String, required: true },
created: { type: Date, default: Date.now },
});
const Message = mongoose.model('Message', messageSchema);
我将此模型导入 mocha 测试套件,并尝试按照以下方式运行测试:
const now = {Date message was created}
it('check time matches time created', () => {
expect(message.created).to.equal(now);
});
到目前为止我已经尝试过什么
我尝试实现这一点的方法是使用Sinon's Fake timers 功能。
所以我的测试用例是这样的:
describe('creating new message', () => {
let clock;
let message;
let now;
before(() => {
clock = sinon.useFakeTimers();
clock.tick(100);
message = new Message({
user: 'Test User',
message: 'Test Message',
});
// Time the message was created
now = Date.now();
clock.tick(100);
});
it('check time matches time created', () => {
expect(message.created).to.equal(now);
});
});
为什么我认为这不起作用
我认为这是行不通的,因为作为 Mongoose 模型默认传递的 Date.now 函数与 Sinon 假计时器隔离(假计时器在测试文件中,模型是从另一个文件)。
再次感谢您!
【问题讨论】:
标签: node.js mongodb unit-testing mongoose sinon