У меня есть метод, который зависит от new Date
, чтобы создать объект даты, а затем его обработать. Я тестирую, что манипуляции работают так, как ожидалось, поэтому мне нужно сравнить возвращаемую дату с ожидаемой датой. Для этого мне нужно убедиться, что new Date
возвращает то же значение в тесте и в тестируемом методе. Как я могу это сделать?Как издеваться над конструктором как новый Date()
Есть ли способ на самом деле высмеять возвращаемое значение функции-конструктора?
Я мог бы создать модуль, который может потребоваться с помощью функции, предоставляющей объект даты, и может быть высмеян. Но это похоже на ненужную абстракцию в моем коде.
пример функции для тестирования ...
module.exports = {
sameTimeTomorrow: function(){
var dt = new Date();
dt.setDate(dt + 1);
return dt;
}
};
как я издеваться возвращаемое значение new Date()
?
Я Здесь немного неуверенно. Не могли бы вы отправить код? Я предполагаю, что вы должны передать 'definedDate' для обеих функций, и когда вы назначаете дату, которую вы должны выполнить var varDate = definedDate || new Date(); ', чтобы проверить, передано ли вам значение тестирования или нет. Затем вы можете включить/отключить, передав/не передав его. – somethinghere
обновлен с помощью (надуманного) примера. Я действительно могу добавить необязательный аргумент даты и передать это для моего тестирования. Однако это не так хорошо, как api, а также мой реальный прецедент уже имеет 3 аргумента. Поэтому я не хочу добавлять другого, тем более, что это может сильно испортить намерение метода. –