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.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
working mock test #39240
working mock test #39240
Changes from 1 commit
13ab19e
ffdaa30
f5e96f3
f923cce
0e1e124
4e4ed13
8369c4a
57ace81
7416b27
d0276c6
0e11bde
172c038
b9e1380
5ad4c1b
d61b7d4
93ba88a
1c5996d
b9f339f
05e71c9
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does it mean to
ref()
andunref()
something? How would I do so?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ref/unref determines if an event loop is kept alive to stuff. I could link to https://nodejs.org/dist/latest-v17.x/docs/api/worker_threads.html#portref ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, a link to the docs/example would help.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I’m struggling to follow this code. Are we in a callback here? Can this be split out?
I see that by now we’ve apparently replaced
import.meta
initializer, but where did that happen? Some comments might help.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It
resolves to node:events
, you mean, it resolves to the mocked version?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This string wrapper leads to some awkward internals and interferes with syntax highlighting. Could this instead be a regular function declaration and return fn.toString()?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My syntax highlighting works with this XD. I avoid
fn.toString
usually since I don't like calling.toString
after years of JS and it biting me on occasion, but for an example/test this is fine.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated to use
String()
so readers can see it is a string without reading to the bottom.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
mock:
prefix returns the unmocked module?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we could rename it to
unmocked:
? both are confusing to meThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or
original:
maybe? Orunmocked:
is fine. Jest calls itactual
: https://jestjs.io/uk/docs/bypassing-module-mocksThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
actual:
seems fineThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
re-reading, no
mock:
is the mocked version and without themock:
is the actual one @_o , this was done because there can be many versions of mocking the module so it needed to have things like a mock version number.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😵💫
I thought the same as Geoffrey—I thought I left a question/comment about it, but I can't find it now.
I'm more confused by the re-affirmation. Why would a user import a mock in their source code?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the user would never use
mock:
in a specifier, the underlying cache is usingmock:
for all the replacements of the "real" module. There can be N number of mocks of a given module, for examplemock:1:node%3Afs
would be 1 mocked version offs
whilemock:2:node%3Afs
would be a different mock, after the 1st one.Basically this is needed for when multiple calls to
import.meta.mock('node:fs', ...)
create multiple modules. We can't actually replace the existing modules or unlink them from ESM graphs that already have been bound.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ohhhh, okay that makes sense! Might that be worth documenting?
I'm thinking this is too valuable to leave buried as a test fixture forever—at a later point, perhaps this should be surfaced in a more public-facing way (either in a doc, a quasi-official working example like our test loaders repo, etc).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You might want to put
\n
at the end of each of these string lines so that the mock source isn’t all on one line, to make debugging and stack traces easier.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.