как ты замораживаешь / фальсифицируешь время с жасмином BDD - PullRequest
9 голосов
/ 06 января 2012

У меня есть такая строка в моем коде

new Date().getFullYear();

и мне нужно, чтобы он всегда возвращался в один и тот же год.

Есть ли способ сделать это с Жасмин?

Спасибо.

Ответы [ 2 ]

18 голосов
/ 07 января 2012

В JavaScript вы можете просто перезаписать функцию в настройках теста:

Date.prototype.getFullYear = function(){return 2012}

Вы также можете использовать жасминовый шпион :

spyOn(Date, 'getFullYear').andReturn(2012)

Другой способэто вставить дату в вашу функцию, которую вы хотите проверить.Что кстати.лучший способ написания тестируемого кода.Не создавайте новые экземпляры в своих функциях, потому что вы всегда начинаете тестировать не только свой код, но и эти экземпляры.

2 голосов
/ 03 августа 2012

Sinon.js поддельные таймеры.

http://sinonjs.org/docs/#clock

Я построил драм-машину в Node.js, используя это в своих спецификациях для проверки временного кода. но я также работал с ним над другим проектом, где единственным способом, которым я мог добиться этого, был год, который я хотел, используя один конкретный год, я думаю, 1969 год по какой-то причине. Я предполагаю, что это начало эры Unix.

во всяком случае, это было почти год назад, поэтому они, вероятно, уже исправили это.

...