【问题标题】:testing backbone views with Jasmine-node使用 Jasmine-node 测试主干视图
【发布时间】:2015-01-08 10:00:17
【问题描述】:

我正在尝试使用 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 和 webpack

谢谢大家

【问题讨论】:

    标签: javascript jquery node.js backbone.js


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 嘿,谢谢你的帮助,但这不起作用:(它说 HTML 对象没有方法 createWindow。
      • 你用的是哪个jsdom包? (npm 安装 xxxx?)
      • 我在 package.json "jsdom": "^1.0.0-pre.3" 中有这个
      • 你能像上面编辑的那样再试一次吗?我正在使用 2.0.0。文档>github.com/tmpvar/jsdom
      猜你喜欢
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多