I have an issue when trying to run mocha unit tests with Backbone, jsdom and Require.js.
There is two simple views ViewA and ViewB (similar here), having their test files ViewATest.js and ViewBTest.js
Running mocha ViewATest.js or mocha ViewBTest.js passes fine, but running both (mocha ViewATest.js ViewBTest.js) fails
RequireJSConf.js
var requirejs = require('requirejs');
requirejs.config({
baseUrl: 'public/javascripts',
paths: {
'backbone': 'lib/backbone/backbone',
'underscore': 'lib/lodash/index'
}
});
module.exports = requirejs;
ViewA.js and ViewB.js
define(['backbone'], function(Backbone) {
'use strict';
return Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
this.$('name').val('test');
return this;
}
});
});
ViewATest.js (ViewBTest.js is similar with B replacing A)
'use strict';
var expect = require('chai').expect;
var requirejs = require("../requireJsConf");
var jsdom = require("jsdom");
describe('ViewATest', function() {
var ViewA, sut;
var template = '\
<input name="name" />\
<input name="description" />'
;
before(function(done){
jsdom.env('<html><body><form id="ViewA">' + template + '</form></body></html>',function(err, window) {
global.window = window;
requirejs(['app/view/ViewA'], function(viewA) {
ViewA = viewA;
sut = new ViewA({
el: "#ViewA"
});
sut.$el.html(template);
done();
});
});
});
it('loads the element', function() {
expect(sut.$el.html()).not.to.be.empty;
});
});
We are using backbone 1.3.2, jsdom 8.3.0, mocha 2.4.5, requirejs 2.2.0
Aucun commentaire:
Enregistrer un commentaire