Search code examples
node.jsdojophantomjsdohdoh-robot

Running DOH tests through node -- 'document is not defined'


I'm trying to get my DOH tests working via the command line for easy testing. However, I'm running into some issues and need some direction!

I am currently running the following test module:

define([
    "doh/runner",
    "dojo/query"
 ], function (
    doh,
    query
) {
    doh.register("Homepage Tests", [{
        name: "Sanity Check",
        runTest: function () {
            return doh.assertNotEqual("Cat", "Dog");
        }
    }]);
});

It works in the browser fine. However, when I run the following command:

node path/to/dojo.js load=doh path/to/test/module.js

I get the following error (abbreviated somewhat):

 /public/bower_components/dojo/selector/_loader.js:5
  var testDiv = document.createElement("div");
          ^
  ReferenceError: document is not defined
  at /public/bower_components/dojo/selector/_loader.js:5:15

Is this because the test isn't spun in up in a phantomJS browser, so it doesn't have access to browser variables? Is there a way to make dojo doh tests that work in the browser work here easily?

For clarity, I am using the grunt-doh plugin (https://github.com/gpbl/grunt-doh) which runs the above command.


Solution

  • this will not work, exactly because of this:

    Is this because the test isn't spun in up in a phantomJS browser, so it doesn't have access to browser variables? Is there a way to make dojo doh tests that work in the browser work here easily?

    i dont know much about DOH, and what is possible with it, but you need to

    a) mock document

    or

    b) write your own grunt-task which spawns a connect-server with grunt-contrib-connect and runs your tests inside that browser

    EDIT: for mocking in DOH see this link (search for Mocking methods)