2014-01-29 29 views
0

我试图让我的DOH测试通过命令行工作,以便于测试。但是,我遇到了一些问题,需要一些指导!通过节点运行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测试在这里轻松工作?

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

回答

0

这是不行的,正是因为这样的:

这是因为在phantomJS浏览器测试不打转了,所以 它并没有进入到浏览器的变量?有没有办法让 dojo测试在浏览器中的工作很容易在这里工作?

我不知道很多关于DOH,什么是可能的,但你需要

一)模拟document

二)编写自己的呼噜声,任务,产生一个连接服务器与grunt-contrib-connect并在该浏览器内运行你的测试

编辑:嘲笑在DOH看到this link(搜索Mocking methods

+0

我将如何去嘲笑浏览器变量?第二个是我正在倾向但试图避免的选项 – streetlight

+0

我认为你将不得不嘲笑整个DOM。你可以试试jsdom(https://github.com/tmpvar/jsdom)。但是,我会用后一种选项运行,因为您可能想在不同的浏览器中进行测试。在代码中将应用程序逻辑与DOM操作分开更好,然后您可以轻松测试逻辑,而无需模拟浏览器/ DOM。然后可以在一组单独的测试中测试代码的DOM操作部分。这当然是一种理想主义的方法,而且不可能花费太多时间。只要它可以实现它值得的目标。 –