2015-01-07 47 views
0

我想用jasmine-node测试我的骨干视图,并且当我运行单元测试时,我正面临Jquery的问题。用Jasmine-node测试骨干视图

骨干查看

var Backbone = require("Backbone"), 
    $ = require('jquery'); 
    Template = require("mytemplate"); 
    Backbone.$ = $; 

module.exports = Backbone.View.extend({// my view ...}); 

测试

var Backbone  = require("Backbone"), 
    MyView = require("MyView"); 

//specs .... 

的问题是:

我的观点的伟大工程:)。但是当我运行测试时,它会显示“jQuery需要一个带有文档的窗口”。我试图用jsdom但did'n为我工作:(

是有可能茉莉花节点内的jQuery运行?

也,我使用一饮而尽用的WebPack

谢谢你们

回答

0

意见,以便为功能要求的文件,所以它更有意义的最接近测试他们对他们生活在(如Web浏览器或模拟浏览器)

不是实际的环境确定一口气,但对于咕噜咕噜,https://github.com/gruntjs/grunt-contrib-jasmine是一个很棒的插件

0

我的解决方案是使用另一个名为jsdom的库,它嘲笑jquery使用的窗口对象。

在每个测试套件的顶部调用下面的代码(我只是将它封装在一个模块中,并且每次都要求它在顶部)。

global.window = require("jsdom") 
        .jsdom() 
        .parentWindow; 
global.document = window.document; 

但我个人还是不推荐使用这种方法,我更喜欢phantomJs方法:)

+0

嘿感谢您的帮助,但是这并没有工作:(它说,HTML对象有没有方法CreateWindow的 – rcarvalho

+0

哪个jsdom软件包你用过?(npm instal xxxx?) – ChinKang

+0

我在package.json中有这个“jsdom”:“^ 1.0.0-pre.3” – rcarvalho