DOH: The Dojo Object Harness ============================ DOH is a unit test framework developed by the Dojo Toolkit Community. For the tutorial published with the latest release see: http://dojotoolkit.org/reference-guide/util/doh.html#util-doh. DOH is a constructed as an AMD package that uses doh/main.js for its main entry point. It may be executed in the browser or by node.js or rhino. Typically, it is loaded by the dojo AMD loader; however, it is also possible to use any complying loader. node.js ======= To run DOH via node.js, issue the command > node path/to/dojo/dojo.js load=doh test=path/to/test/module For example, from the util/doh/ directory you can run the self test as follows: ~/dev/dojotoolkit/util/doh> node ../../dojo/dojo.js load=doh test=doh/tests/selfTest Since node.js includes executing scripts to discover their location, the dojo node bootstrap can discover baseUrl (the dojo directory) without further help. rhino ===== To run DOH via rhino, issue the command >java -jar path/to/js.jar path/to/dojo/dojo.js baseUrl=path/to/dojo load=doh test=path/to/test/module For example, from the util/doh/ directory, you can run the self test as follows (assumes js.jar is in the user's home directory): ~/dev/dojotoolkit/util/doh> java -jar ../shrinksafe/js.jar ../../dojo/dojo.js baseUrl=../../dojo load=doh test=doh/tests/selfTest Since rhino does not give scripts the ability to discover their location, you must do one of the following * provide a baseUrl command line argument that specifies the dojo directory * execute the command form the the dojo directory Here's the equivalent example command from the dojo directory: ~/dev/dojotoolkit/dojo> java -jar ../util/shrinksafe/js.jar dojo.js load=doh test=doh/tests/selfTest browser ======= To run DOH in the browser, point your browser to util/DOH/runner.html. You'll also need to provide at least one test module to execute by the query parameter "test". For example, to run the dojo unit tests, the URL would look something like... http://localhost/dev/dojotoolkit/util/doh/runner.html?test=dojo/tests/module (Of course the host and path--localhost and dev/dojotoolkit/util in the example--will depend on how you've configured your test environment. DOH includes the following query parameters: test: a comma-separated-list of AMD module identifiers that contain the tests to load. testUrl: deprecated alias for test paths: a semicolon-separated-list of comma-separated-pairs of (module-identifier -> path-prefix) to provide to the loader's path configuration property. registerModulePath: deprecated alias for paths boot: a comma-separated-list of Javascript resources to script inject to bootstrap DOH. Defaults to "../../dojo/dojo.js", which causes DOH to use the dojo AMD loader. You may use this parameter to provide and alternate loader. dojoUrl: deprecated alias for boot async: If provided, instructs the dojo loader to operate in async mode. breakOnError: If provided, instructs DOH to break into the debugger upon an error. About Hard Dojo Dependency ========================== As of v1.7 DOH depends on dojo base via AMD define dependency lists. If this causes you concern, you may sandbox dojo by setting dojoConfig.scopeMap.dojo to falsy which will result in *not* publishing dojo to the global namespace. Alternatively, you may provide a custom library that includes the part of the dojo base API used by DOH and map the AMD module identifier "dojo" to this custom library. However, we know of no good reason to follow either of these paths.