Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
The mockdate npm package is designed for testing JavaScript code that relies on dates. It allows developers to temporarily 'mock' or 'fake' the current date and time, making it possible to simulate specific temporal conditions in tests without altering the system's actual clock. This is particularly useful for ensuring consistent test results and for testing time-sensitive code paths.
Set a mock date
This feature allows you to set the current date and time to a specific value. It's useful for testing how your application behaves on specific dates and times.
MockDate.set('2023-04-01T00:00:00.000Z');
Reset to the system's current date
After setting a mock date, you can use this feature to reset the system's date and time back to its real current value. This is particularly useful to clean up after tests that require mocking the date.
MockDate.reset();
Set a mock date with a specific timezone offset
In addition to setting a mock date, you can specify a timezone offset in minutes. This allows for more precise control over the mocked date and time, accommodating tests that are sensitive to timezones.
MockDate.set('2023-04-01T00:00:00.000Z', 120);
Sinon is a comprehensive testing utility that, among other features, includes the ability to stub JavaScript's Date object. Compared to mockdate, Sinon offers a broader range of testing functionalities beyond date mocking, such as spies, stubs, and mocks for JavaScript functions.
Timekeeper is a simple package for controlling the system time in JavaScript. It's similar to mockdate in its purpose of mocking the current time for testing purposes. However, timekeeper has a simpler API and fewer features, focusing solely on freezing and traveling in time without the additional timezone offset control that mockdate offers.
Lolex is a library for JavaScript and Node.js that allows for the mocking of the system clock. It provides functionalities similar to mockdate but extends its capabilities to include mocking of timers (setTimeout, setInterval, etc.). This makes lolex a more versatile choice for testing time-dependent code.
A JavaScript Mock Date object that can be used to change when "now" is.
npm install mockdate --save-dev
MockDate has been tested in Node, IE9+, Chrome, Firefox, and Opera.
import MockDate from 'mockdate'
MockDate.set(date)
date: Object
The Date
to be returned when no parameters are passed to new Date()
. Supports any object that has a .valueOf
method that returns a value that can be passed to new Date()
.
date: String
The string representation of the date which is passed to the new Date()
constructor. This creates the Date
to be returned when no parameters are passed to new Date()
.
date: Number
The millisecond representation of the Date
to be returned when no parameters are passed to new Date()
.
MockDate.reset();
Will restore the original Date
object back to the native implementation.
MockDate.set('2000-11-22');
new Date().toString() // "Tue Nov 21 2000 18:00:00 GMT-0600 (CST)"
MockDate.set('1/30/2000');
new Date().toString() // "Sun Jan 30 2000 00:00:00 GMT-0600 (CST)"
MockDate.set(new Date('2/20/2000'));
new Date().toString() // "Sun Feb 20 2000 00:00:00 GMT-0600 (CST)"
MockDate.set(moment('3/30/2000').toDate()); // using momentjs
new Date().toString() // "Thu Mar 30 2000 00:00:00 GMT-0600 (CST)"
MockDate.reset();
new Date().toString() // "Mon Mar 17 2014 18:08:44 GMT-0500 (CDT)"
npm test
3.0.5
FAQs
A JavaScript mock Date object that can be used to change when "now" is.
The npm package mockdate receives a total of 1,248,017 weekly downloads. As such, mockdate popularity was classified as popular.
We found that mockdate demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.