使用Jasmine-node测试骨干视图

时间:2015-01-07 01:36:16

标签: javascript jquery node.js backbone.js

我正在尝试使用jasmine-node测试我的骨干视图,当我运行单元测试时,我遇到了Jquery的问题。

骨干查看

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,但它对我没用:(

是否可以在jasmine-node中运行jquery?

另外,我正在使用gulp with webpack

谢谢你们

2 个答案:

答案 0 :(得分:0)

视图需要一个文档才能正常运行,因此最接近它们所处的实际环境(例如Web浏览器或无头浏览器)测试它们更有意义

不确定gulp,但对于咕噜声,https://github.com/gruntjs/grunt-contrib-jasmine是一个很棒的插件

答案 1 :(得分:0)

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

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

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

但我个人仍然不推荐这种方法,我更喜欢phantomJs方法:)