Michael
Michael

Reputation: 55

Uncaught exception with qunit and jquery

I'm facing an issue while trying to get javascript unit tests to work at the command line using qunit.

Here's some sample code to reproduce the error:

file util.js:

function abc() {
    return 'abc';
}

if (typeof module !== 'undefined' && module.exports) {
    module.exports = {
        abc: abc
    };
}

file util-tests.js

var qunit = require("qunit");

test("Test abc function", function () {
         equal(util.abc(), 'abc');
});

With these files, I can run tests using the following command (gives a table-like output in the shell with the test results):

qunit -c util:util.js -t util-tests.js

Now it breaks if I add the following to util.js

$(document).ready(function () {
    /* some code here */
});

Here's the error output:

qunit -c util:util.js -t util-tests.js

Testing /home/mfrere/jstst/util.js ... [Error: Uncaught exception in child process.]

same problem with:

var a = $;

or:

var a = document;

So this makes me think that I need to import jQuery somehow, so I thought about adding jquery.js as a dependency to the command, like this:

qunit -c util:util.js -t util-tests.js -d jquery.js

The above command gives me the same 'Uncaught exception' error, even if util.js doesn't contain any reference to '$'.

I'll probably need to do something else to get qunit to recognize 'document' as well, but I don't know what or how.

Now here's my question: what should I do to get this to work? It is important to keep in mind I want to test my files at the command line, not in a browser.

Just in case I did something wrong in the setup process, this is how I installed node/qunit (under ubuntu):

git clone git://github.com/creationix/nvm.git ~/.nvm

in .bashrc, I added the following line:

source ~/.nvm/nvm.sh

picked a specific version of node

nvm install v0.9.2
nvm alias default 0.9

and installed qunit

npm install -g qunit

finally I had to add this in .bashrc as well:

export NODE_PATH=~/.nvm/v0.9.2/lib/node_modules

Upvotes: 2

Views: 803

Answers (1)

Eric Elliott
Eric Elliott

Reputation: 4751

You haven't imported jQuery:

$ = require('jquery'), jQuery = require('jquery');

If you're using browserify, change that to 'jquery-browserify'.

Upvotes: 3

Related Questions