0

我试图让我的 DOH 测试通过命令行进行以便于测试。但是,我遇到了一些问题,需要一些指导!

我目前正在运行以下测试模块:

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

它在浏览器中运行良好。但是,当我运行以下命令时:

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

我收到以下错误(有些缩写):

 /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

这是因为测试没有在 phantomJS 浏览器中启动,所以它无法访问浏览器变量?有没有办法让在浏览器中工作的 dojo doh 测试在这里很容易工作?

为清楚起见,我使用了运行上述命令的 grunt-doh 插件 ( https://github.com/gpbl/grunt-doh )。

4

1 回答 1

0

这不起作用,正是因为这个:

这是因为测试没有在 phantomJS 浏览器中启动,所以它无法访问浏览器变量?有没有办法让在浏览器中工作的 dojo doh 测试在这里很容易工作?

我不太了解 DOH 以及它有什么可能,但你需要

a) 模拟document

或者

b) 编写您自己的 grunt-task,它使用grunt-contrib-connect生成一个连接服务器并在该浏览器中运行您的测试

编辑:要在 DOH 中进行模拟,请参阅此链接(搜索Mocking methods

于 2014-01-29T14:42:51.393 回答