http.IncomingMessage mock


Yet another http.IncomingMessage
mock that is only a readable stream, not a writable stream. It tries to simulate IncomingMessage as close as possible by:
- validating and setting uppercased
method
(defaults to GET),
- ensuring there is a
url
(defaults to /
),
- populating
headers
and rawHeaders
as expected,
- populating
trailers
and rawTrailers
after the end
event,
- ending the stream automatically when the method is GET/HEAD/DELETE.
Data can be piped into the request mock by either providing props.source
(String, Buffer, Readable Stream), calling _setSource()
with any of the aforementioned data types, or by using the usual suspects (_read()
, read()
, push()
, unshift()
).
Before passing through data from a source stream, the mock awaits the first read attempt, then periodically pulls as much as it can and as much the mock's buffer can handle, never more. Creating a mock and passing a source stream, then destroying the mock, creating another and setting the same source there without any actual read attempts will not cause any data to be pulled from the source.
Another mode of operation lets the mock consume data from the source stream immediately, effectively draining it. A callback can be used to be informed when all data has been transferred.
readable-mock-req supports Streams3 API via readable-stream ~v1.1.0.
Installation
npm install --save-dev readable-mock-req
API
new MockRequest(method, url, props)
Parameters:
Name | Type | Argument | Default | Description |
---|
method |
string
|
<optional>
|
GET
| HTTP method |
url |
url
|
<optional>
|
/
| URL |
props |
object
|
<optional>
|
{}
| Additional properties, like headers or source |
- Source:
-
_setSource(src, cb)
-
Set the source data or stream
Parameters:
Name | Type | Argument | Description |
---|
src |
object
|
string
|
Buffer
|
null
|
| Source, stream or static data |
cb |
function
|
boolean
|
<optional>
| Pass true or a callback fn and all data from the source stream
will be pulled upfront, having the Content-Length header set accordingly, if there is no such
header already. Signature: fn(err, length) , where err is any potential Error as emitted by
the source stream. length is provided in any case and shows how much data has been read. |
- Source:
-
setTimeout()
-
- Source:
generated with docme
Contributing
Take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt test
.
License
Copyright (c) 2015 Felix Zandanel
Licensed under the MIT license.
See LICENSE for more info.