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.
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.
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
}
}
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.
- All readable/writable stream methods.
req._fail(error)
Causes the request to emit anerror
when written to.