Как заблокировать новую дату() с помощью синона?
Я хочу проверить, что различные поля даты были правильно обновлены, но я не хочу возиться с предсказанием при вызове new Date()
. Как удалить конструктор Date?
import sinon = require('sinon');
import should = require('should');
describe('tests', () => {
var sandbox;
var now = new Date();
beforeEach(() => {
sandbox = sinon.sandbox.create();
});
afterEach(() => {
sandbox.restore();
});
var now = new Date();
it('sets create_date', done => {
sandbox.stub(Date).returns(now); // does not work
Widget.create((err, widget) => {
should.not.exist(err);
should.exist(widget);
widget.create_date.should.eql(now);
done();
});
});
});
В случае, если это актуально, эти тесты выполняются в приложении node, и мы используем TypeScript.
Ответы
Ответ 1
Я подозреваю, что вы хотите useFakeTimers
:
var now = new Date();
var clock = sinon.useFakeTimers(now.getTime());
//assertions
clock.restore();
Это простой JS. Рабочий пример TypeScript/JavaScript:
var now = new Date();
beforeEach(() => {
sandbox = sinon.sandbox.create();
clock = sinon.useFakeTimers(now.getTime());
});
afterEach(() => {
sandbox.restore();
clock.restore();
});