Skip to content

Instantly share code, notes, and snippets.

@nmccready
Forked from bsatrom/hook_stdout.coffee
Last active October 11, 2016 21:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nmccready/36477730e4dcc942c3fef5e682d2ec11 to your computer and use it in GitHub Desktop.
Save nmccready/36477730e4dcc942c3fef5e682d2ec11 to your computer and use it in GitHub Desktop.
Samples for hooking into STDOUT for unit testing in Node.js
exports = module.exports
exports.setup = (callback) ->
write = process.stdout.write
process.stdout.write = ((stub) ->
(string, encoding, fd) ->
stub.apply process.stdout, arguments
callback string, encoding, fd)(process.stdout.write)
return -> process.stdout.write = write
var exports = module.exports;
exports.setup = function(callback) {
var write = process.stdout.write;
process.stdout.write = (function(stub) {
return function(string, encoding, fd) {
stub.apply(process.stdout, arguments);
callback(string, encoding, fd);
};
})(process.stdout.write);
return function() {
process.stdout.write = write;
};
};
exports = module.exports
# server logic omitted for brevity
exports.listen = (port, host, callback) ->
try
server.listen port, host, callback
util.log "Server listening at http://#{host or "127.0.0.1"}:#{port}/"
catch err
util.log err.message
var exports;
exports = module.exports;
exports.listen = function(port, host, callback) {
try {
server.listen(port, host, callback);
return util.log("Server listening at http://" + (host || "127.0.0.1") + ":" + port + "/");
} catch (err) {
return util.log(err.message);
}
};
server = require '../js/server'
hook = require '../js/hook_stdout'
describe 'chat server', ->
it 'should listen at localhost on a port I specify', ->
unhook = hook.setup((string, encoding, fd) ->
expect(string).toContain 'Server listening at http://127.0.0.1:3001/'
)
server.listen '3001'
unhook()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment