Search code examples
node.jsbackbone.js

How can I create a window for headless testing on nodejs?


Why can I do to create a window so it doesn't throw this error?

throw new Error( "jQuery requires a window with a document" );
Error: jQuery requires a window with a document

Here's my app.js file.

var Backbone  = require('backbone');
var jquery    = require('jquery');
var jsdom     = require('jsdom');

var JournalView = Backbone.View.extend({
  el: '#board',
  initialize: function() {
    this.render();
  },
  render: function() {
    this.$el.html("Hello, world!");
  },
});

var journalView = new JournalView();


Solution

  • use window from jsdom

    here is an example: http://artsy.github.io/blog/2013/06/14/writing-headless-backbone-tests-with-node-dot-js/

    jsdom.env({
      html: "<html><body></body></html>",
      done: function(errs, window) {
        global.window = window;
        // ...
        callback();
      }
    });