Add an error when creating a clock with no Date object #205
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Improve sinon#1852 issue by adding an explicit error message.
Background
When using
webpack
andjsdom
together, the global context doesn't have aDate
object andlolex
will fail with a really confusing error:TypeError: Cannot read property 'now' of undefined
.This problem is easily triggered when using
sinon.useFakeTimers
(which relies onlolex
) in this setup.Solution
This PR adds an explicit exception when no
Date
are present in the global context.The message contains a link to @mroderick's comment that explains how to get around the problem. (Maybe this would be better as a wiki page?)
The check is placed in
createClock
(which means it's triggered byinstall
as well) instead of right whenNativeDate
is initialised so it doesn't crash right away (aswithGlobal
is called when the module is initialised).