This repository has been archived by the owner on Aug 20, 2019. It is now read-only.
toLocaleDateString() results in "Method invoked on an object that is not Date" error in Chrome #23
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.
After calling Timecop.install and Timecop.travel, when I then call
toLocaleDateString()
on any date object, I get this error:The backtrace is:
You can where the error is defined in the V8 source code here:
I don't understand it completely, but it looks like even though we called the
toLocaleDateTime
method on an actual nativeDate
object (this._underlyingDate
), the waytoLocaleDateTime
is defined (Object.defineProperty(Date.prototype, 'toLocaleDateString',...
), it ends up callingtoLocaleDateTime
with a non-native Date object (presumably aTimecop.MockDate object
) as the first argument. Hence my proposed workaround in the attached pull request...I'm using Chromium Version 28.0.1500.52 Ubuntu 12.04 (28.0.1500.52-0ubuntu1.12.04.2).