require.config({ paths: { jquery: '../jquery-1.7.2.min', underscore: '../underscore-min', backbone: '../backbone-min' }, shim: { /* this configuration is unnecessary underscore: { exports: function() { return _.noConflict(); } }, */ backbone: { deps: ['underscore', 'jquery'], exports: function() { return Backbone.noConflict(); } } } }); // Testing with QUnit require(['backbone'], function(Backbone) { var Shop = Backbone.Model.extend({}); var ShopList = Backbone.Collection.extend({ model: Shop }); var ShopView = Backbone.View.extend({ tagName: 'li' }); module('Backbone Test', { setup: function() { this.list = new ShopList([ new Shop({name: 'ikea'}), new Shop({name: 'muji'}), new Shop({name: 'uniqlo'}) ]); this.view = new ShopView(); }, teardown: function() { window.errors = null; } }); test('Backbone is loaded correctly', function() { expect(2); notEqual(Backbone, undefined); strictEqual(Backbone, Backbone.noConflict()); }); test('Check dependency on underscore', function() { expect(1); var muji = this.list.filter(function(shop) { return shop.get('name').match(/j/); }) equal(muji[0].get('name'), 'muji'); }); test('Check dependency on jQuery', function() { expect(1); notEqual(this.view.$el, undefined); }); });