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.
This PR contains the following updates:
10.0.6
->11.3.3
Release Notes
nock/nock
v11.3.3
Compare Source
Bug Fixes
v11.3.2
Compare Source
Upgrading from Nock 10 to Nock 11
Bug fixes and internal improvements
Nock 11 includes many under-the-hood improvements, including a fully offline
test suite and 100% test coverage. The codebase was also converted to ES6
syntax and formatted with Prettier. Leaning on the test coverage, some
substantial refactors have begun.
Many bug fixes are included. See the detailed changelog below or the
compare view for details.
Fabulous new features for developers
http.request
signatures added in Node 10.9using e.g.
.conditionally(() => true)
afterRecord()
post-processing hook. When
afterRecord()
returns a string, therecorder will no longer attempt to re-stringify it. (Added in v11.3)
.reply()
can now be async/promise-returning..reply()
or.defaultReplyHeaders()
,can now be done consistently using an object, Map, or flat array.
Breaking changes
For many developers no code changes will be needed. However, there are several
minor changes to the API, and it's possible that you will need to update your
code for Nock to keep working properly. It's unlikely that your tests will
falsely pass; what's more probable is that your tests will fail until the
necessary changes are made.
Nock 11 requires Node 8 or later. Nock supports and tests all the "current"
and "maintenance" versions of Node. As of now, that's Node 8, 10, and 12.
In Nock 10, when
reply()
was invoked with a function, the return values werehandled ambiguously depending on their types.
Consider the following example:
In Nock 10, the 200 was ignored, the 500 was interpreted as the status
code, and the body would contain
'hello world'
. This caused problemswhen the goal was to return a numeric array, so in Nock 11, the 200 is
properly interpreted as the status code, and
[500, 'hello world']
as thebody.
These are the correct calls for Nock 11:
The
.reply()
method can be called with explicit arguments:It can be called with a status code and a function that returns an array:
Alternatively the status code can be included in the array:
.reply()
can also be called with anasync
or promise-returning function. Thesignatures are identical, e.g.
Finally, an error-first callback can be used, e.g.:
In Nock 10, errors in user-provided reply functions were caught by Nock, and
generated HTTP rersponses with status codes of 500. In Nock 11 these errors
are not caught, and instead are re-emitted through the request, like any
other error that occurs during request processing.
Consider the following example:
When
fs.readFile()
errors in Nock 10, a 500 error was emitted. To get thesame effect in Nock 11, the example would need to be rewritten to:
When
.reply()
is invoked with something other than a whole number statuscode or a function, Nock 11 raises a new error Invalid ... value for status code.
Callback functions provided to the
.query
method now receive the result ofquerystring.parse
instead of
qs.parse
.In particular,
querystring.parse
does not interpret keys with JSONpath notation:
In Nock 10, duplicate field names provided to the
.query()
method weresilently ignored. We decided this was probably hiding unintentionally bugs
and causing frustration with users. In Nock 11, attempts to provide query
params more than once will throw a new error
Query parameters have aleady been defined. This could happen by calling
.query()
twice, or by calling.query()
after specifying a literal querystring via the path.
Paths in Nock have always required a leading slash. e.g.
In Nock 10, if the leading slash was missing the mock would never match. In
Nock 11, this raises an error.
The
reqheaders
parameter should be provided as a plain object, e.g.nock('http://example.com', { reqheaders: { X-Foo: 'bar' }})
. When theheaders are specified incorrectly as e.g.
{ reqheaders: 1 }
, Nock 10 wouldbehave in unpredictable ways. In Nock 11, a new error
Headers must be provided as an object is thrown.
In Nock 10, the
ClientRequest
instance wrapped the nativeon
methodand aliased
once
to it. In Nock 11, this been removed andrequest.once
will correctly call registered listeners...once.
In Nock 10, when the method was not specified in a call to
nock.define()
,the method would default
GET
. In Nock 11, this raises an error.In very old versions of nock, recordings may include a response status
code encoded as a string in the
reply
field. In Nock 10 these strings couldbe non-numeric. In Nock 11 this raises an error.
Updates to the mock surface
the overrides to
request.end()
, includingrequest.end(cb)
in Node 12..destroy()
methodare propagated correctly. (Added in v11.3)
.complete
property is set whenending the response.
unref()
function(which does nothing).
If you discover bugs in this release, please open a bug report on the Nock repo. 🐛
Detailed changelog
Interceptor.query
twice throws an error.query
method throws an error instead of ignoring subsequent values.
Features
conditionally()
(#1488) (24e5b47)IncomingMessage.client
for parity with real requests (dc71a3b), closes /github.com/nodejs/node/blob/2e613a9c301165d121b19b86e382860323abc22f/lib/_http_incoming.js#L67unref
to Socket (#1612) (a75f49f)2e56fb0
), closes #1670de9c40b
), closes #1669Bug Fixes
req.end(cb)
compatibility with Node 12 (#1551) (31623fb).matchHeader()
withallowUnmocked
(#1480) (d6667f0)req.end(cb)
; prevent TypeError in Node 12 (#1547) (9a494da), closes #1509new ClientMessage()
is invoked with no options (#1386) (6d2a312)Code Refactoring
v11.3.1
Compare Source
v11.3.0
Compare Source
v11.2.0
Compare Source
v11.1.0
Compare Source
v11.0.0
Compare Source
Renovate configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻️ Rebasing: Whenever PR is stale, or if you modify the PR title to begin with "
rebase!
".🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot. View repository job log here.