How to stop Global Failures in qUnit?

streetlight picture streetlight · Jan 23, 2013 · Viewed 6.9k times · Source

I'm new to qunit, and am attempting to integrate it with an existing environment.

One of the issues I get on pages that utilize jQuery is this:

global failure (1, 0, 1)Rerun6 ms
Uncaught ReferenceError: $ is not defined

I think this is because I'm not calling the jquery library in the qunit HTML. Is it possible to set a parameter to ignore globals like this? I am trying to make the HTML as flexible as possible, and as many editors have different dependencies, I only want qunit to test the functions I specifically give it to test.

Answer

Steen picture Steen · Jun 26, 2013

I'm stumped at the same error, however without using jQuery. The part of QUnit that is responsible for propagating the error is the window.onerror callback function, which, among other things, check whether the QUnit.config.current.ignoreGlobalErrors configuration value is set.

QUnit configuration values are described in the QUnit.config documentation. Unfortunately, the current property of config object is not described, but from looking at the source, the ignoreGlobalErrors configuration property defines whether global errors are reported or not. A test run with the following lines commented out runs fine:

QUnit.test( "global failure", extend( function() {
    QUnit.pushFailure( error, filePath + ":" + linerNr );
}, { validTest: validTest } ) );

I realize that this is just a hack, but if you're looking for a quick'n'dirty way to silence QUnit, this will work.