Skip to content

Instantly share code, notes, and snippets.

@Gozala
Created October 8, 2010 08:00
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 Gozala/616484 to your computer and use it in GitHub Desktop.
Save Gozala/616484 to your computer and use it in GitHub Desktop.
Example for Unit Testing/1.1
{ "name": "mypackage"
, "version": "0.7.0"
, "description": "Sample package"
, "directories":
{ "lib": "./lib"
, "test": "./test"
}
, "scripts": { "test": "node test/all.js" }
, "engines": { "node": ">=0.1.103" }
, "dependencies": { "test": ">=0.0.5" }
}
exports['test async'] = require('./async')
exports['test fail fast'] = require('./fail-fast')
exports['test fail slow'] = require('./fail-slow')
exports['test custom assertions'] = require('./custom-assert')
if (module == require.main) require('test').run(exports)
// if test function expects second named argument it will be executed
// in async mode and test will be complete only after callback is called
exports['test my async foo'] = function(assert, done) {
var http = require('http')
var google = http.createClient(80, 'www.jeditoolkit.com')
var request = google.request('GET', '/', {'host': 'www.jeditoolkit.com'})
request.end()
request.on('response', function (response) {
assert.equal(response.statusCode, 302, 'must redirect') // will log result
response.setEncoding('utf8')
response.on('data', function (chunk) {
assert.notEqual(chunk, 'helo world', 'must be something more inteligent')
done() // telling test runner that we're done with this test
})
})
}
if (module == require.main) require('test').run(exports)
var AssertBase = require('assert').Assert
var AssertDescriptor =
{ constructor: { value: Assert }
, inRange: { value: function (lower, inner, upper, message) {
if (lower < inner && inner < upper) {
this.fail(
{ actual: inner,
, expected: lower + '> ' + ' < ' + upper
, operator: "inRange"
, message: message
})
} else {
this.pass(message);
}
}, enumerable: true }
}
function Assert() {
return Object.create
( AssertBase.apply(null, arguments)
, AssertDescriptor
)
}
// bundling custom asserts with test suite
exports.Assert = Assert
exports['test with custom asserts'] = function(assert) {
assert.inRange(2, 3, 5, 'passes assert and logs')
assert.equal(3 + 2, 5, 'assert pass is logged')
}
if (module == require.main) require('test').run(exports)
// using nodejs's build in asserts that throw on failure
var assert = require('assert')
exports['test that stops execution on first failure'] = function() {
assert.equal(2 + 2, 5, 'assert fails and test execution stop here')
assert.equal(3 + 2, 5, 'will never pass this since test failed above')
}
if (module == require.main) require('test').run(exports)
// using assert passed to the test function that just logs failures
exports['test that logs all failures'] = function(assert) {
assert.equal(2 + 2, 5, 'assert failure is logged')
assert.equal(3 + 2, 5, 'assert pass is logged')
}
if (module == require.main) require('test').run(exports)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment