0.3.0 • Published 10 years ago

testify v0.3.0

Weekly downloads
7
License
MIT
Repository
github
Last release
10 years ago

Testify

Simple synchronous and asynchronous testing, using the assertions of your choice.

Written (and most easily used) in CoffeeScript.

Basic usage

Testify = require "../src/testify"
assert = require "assert"

Testify.test "straightforward synchronous testing", (context) ->

  context.test "arithmetic", ->
    assert.equal (2 + 2), 4

  context.test "strings", ->
    assert.equal "foo".toUpperCase(), "FOO"

  context.test "error handling", ->
    error = new Error "I failed."
    assert.ifError(error)

Output:

basic usage output

Asynchronous usage

some_async_call = (callback) ->
  process.nextTick ->
    callback null, "pie"

another_async_call = (input, callback) ->
  process.nextTick ->
    callback null, ["bacon", "cheese", "pie"]

Testify.test "a suite of tests", (context) ->

  # When you need to test the results of an asynchronous function,
  # give context.test() a function that takes an argument.  You can
  # then use that argument as a new context for nesting tests.
  context.test "testing something asynchronous", (context) ->

    some_async_call (error, result1) ->

      # If you give context.test() a function that takes no arguments,
      # the test is required to be synchronous, and considered to have
      # passed if the function runs without throwing an error.
      context.test "result makes me happy", ->
        assert.ifError(error)
        assert.equal(result1, "pie")

      context.test "a nested asynchronous test", (context) ->

        another_async_call result1,  (error, result2) ->

          context.test "result makes me deeply happy", ->
            assert.ifError(error)
            assert.deepEqual result2, ["bacon", "cheese", "pie"]

      context.test "shortcut for passing an async test", (context) ->
        process.nextTick ->
          # you can call context.pass() instead of using a synchronous test
          context.pass()

      context.test "shortcut for failing an async test", (context) ->
        process.nextTick ->
          context.fail("I just couldn't go on")

Output:

async usage output

Run your test files with the coffee executable, or by requiring them, or using bin/testify [--color].

coffee path/to/test.coffee
bin/testify -c path/to/test.coffee

Examples

Tests for Shred, an HTTP client

You can also use test nesting with entirely synchronous work, as a way to structure the test results:

Shred's header processing test

0.3.0

10 years ago

0.2.11

11 years ago

0.2.10

11 years ago

0.2.9

11 years ago

0.2.8

12 years ago

0.2.7

12 years ago

0.2.6

12 years ago

0.2.5

12 years ago

0.2.4

12 years ago

0.2.2

12 years ago

0.2.1

12 years ago

0.2.0

12 years ago

0.2.0-beta.1

12 years ago

0.2.0-beta

12 years ago

0.1.3

12 years ago

0.1.2

12 years ago

0.1.1

12 years ago

0.1.0

13 years ago