4.0.0 • Published 11 years ago

nodeunit-b v4.0.0

Weekly downloads
4
License
-
Repository
github
Last release
11 years ago

nodeunit-b

being a library for conveniently testing browser javascript with node

nodeunit-b provides a convenient interface around jsdom, bootstrapping front-end code with a DOM and allowing you to unit test it with nothing more than node and a few libraries (ie, no browser).

Example

    var b = require('nodeunit-b');

    // relative to test file. The top level of your front-end library file
    directory. Can be absolute, but that is probably unwise.
    b.setRequireRoot('../../');

    // front-end dependencies to require and inject into the DOM.
    b.require([
        // relative to where you set require root
        'jquery.js',
        'underscore.js',
        'lib_i_want_to_test.js' // provides, say, window.myLib
    ]);

    // wrap your test object
    exports.test_all_the_things = b({
        setUp: function(cb, b) {
            // mock out jquery.ajax
            b.$.ajax = function() { };
            cb();
        },
        tearDown: function(cb, b) [
            // another chance to mutate b
            cb();
        },
        test_thing: function(test, b) {
            var $ = b.$;
            $('<span/>').appendTo('body').addClass('foo');

            b.myLib.fooToBar();

            test.ok($('span').hasClass('bar'), 'we set the class');
            test.ok(!$('span').hasClass('foo'), 'and removed the old one');

            test.done();
        }
    });

API

b

    exports.test_object = b(test_object);

The primary function. This produces a nodeunit test object that will provide a DOM to setUp, tearDown, and test functions (see above code example).

setRequireRoot

    b.setRequireRoot('../');

Set the location to which front-end requires will be relative. For example, if your test resides in:

    /home/nate/src/proj/static/js/myLib/tests/test.js

and you want to reference dependencies in /home/nate/src/proj/static/js/, then:

    b.setRequireRoot('../../');

will set the require root to /home/nate/src/proj/static/js/.

require

    b.require(['jquery.js', 'underscore.js', 'myLib.js']);

or

    b.require('myLib.js');

Inject a dependency into the DOM.

html

    b.html('<html class="ie"></html>');

Sets the HTML used to bootstrap the DOM. By default this HTML is set to:

    <html><head></head><body></body></html>

Author

nathaniel k smith nathanielksmith@gmail.com

License

MIT

4.0.0

11 years ago

3.0.0

11 years ago

2.1.0

11 years ago

2.0.0

11 years ago

1.1.0

11 years ago

1.0.1

11 years ago

1.0.0

11 years ago