mock-req
Version:
Mocks node.js `http.IncomingMessage` (a request). See also `mock-res`.
92 lines (67 loc) • 1.7 kB
Markdown
mock-req
========
Mocks node.js `http.IncomingMessage` (a request). See also `mock-res`.
Being a readable/writable stream, you can pipe the request body to and from it.
# Usage
See `test.js` for further usage.
var MockReq = require('mock-req');
// Basic usage
var req = new MockReq();
// With options
var req = new MockReq({
method: 'PUT',
url: '/stuff?q=thing',
headers: {
'Accept': 'text/plain'
},
// arbitrary properties:
search: 'thing'
});
// Write body
req.write('hello');
req.write('world');
// Or stringify to JSON
req.write({
val: 5
});
// Or even buffers
req.write(new Buffer('buf'));
// End body
req.end();
// NOTE req.end() is automatically called if
// method is set to GET/HEAD/DELETE.
## Example test case
var assert = require('assert');
var ping = require('./ping-handler');
var MockReq = require('mock-req');
function test(done) {
/* Arrange */
var req = new MockReq({
method: 'GET',
url: '/stuff',
headers: {
'Accept': 'text/plain'
}
});
// NOTE: `req.end()` is automatically called for GET/HEAD/DELETE methods
// Use `mock-res` for a better mock
var res = {
end: end
};
/* Act */
ping(req, res);
/* Assert */
function end(data) {
assert.equal(data, 'okay');
done(); // this is an async test
}
}
## Options
The options parameter is optional.
* `method`: The request's method, defaults to 'GET'
* `url`: The request's URL, defaults to ''
* `headers`: A case insensitive name/value object
All other values will be copied to the request.
## Methods
* All readable/writable stream methods.
* `req._fail(error)` Causes the request to emit an `error` when written to.