I had a little problem with the combination of busterjs + requirejs + backbone, the structure of my project:
Js-src
- lib // jquery, require, etc.
- view
- models
-app.js // configuration and application start required
js (the same structure compiled as above)
Test
-buster.js
-require-config.js
-TEST-test.js
required-config.js:
require.config({ baseUrl: 'js-src/', paths: { jquery: 'lib/jquery', jplugins: 'lib/jquery.plugins', underscore: 'lib/underscore', backbone: 'lib/backbone' }, shim: { 'backbone': { deps: ['underscore', 'jplugins'], exports: 'Backbone' }, 'jplugins': { deps: ['jquery'] } } });
typical file, except in lib:
define(function (require) { var $ = require('jquery'), Backbone = require('backbone'), otherElem = require('views/other'), View = Backbone.View.extend({ el: '#el', initialize: function () { }, showLinks: function (value) { }, render: function ) { } }); return View; });
buster.js:
var config = module.exports; config['browser-all'] = { autoRun: false, environment: 'browser', rootPath: '../', libs: [ 'js-src/lib/require.js', 'test/require-config.js' ], sources: [ 'js-src/**/*.js' ], tests: [ 'test/*-test.js' ]
test-test.js:
buster.spec.expose(); require(['views/View'], function (module) { describe("An AMD module", function () { it("should work", function () { expect(true).toEqual(true); }); }); });
When I run it using the buster test, I get:
Uncaught exception: ./js-src/lib/require.js:192 Error: Script error http://requirejs.org/docs/errors.html#scripterror TypeError: uncaughtException listener threw error: Cannot read property 'id' of undefined at Object.uncaughtException (/usr/local/lib/node_modules/buster/node_modules/buster-test-cli/lib/runners/browser/progress-reporter.js:49:50) at notifyListener (/usr/local/lib/node_modules/buster/node_modules/buster-core/lib/buster-event-emitter.js:37:31) at Object.emit (/usr/local/lib/node_modules/buster/node_modules/buster-core/lib/buster-event-emitter.js:101:17) at Object.emitCustom (/usr/local/lib/node_modules/buster/node_modules/buster-test-cli/lib/runners/browser/remote-runner.js:283:14) at /usr/local/lib/node_modules/buster/node_modules/buster-test-cli/lib/runners/browser/remote-runner.js:89:16 at /usr/local/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/buster-capture-server/lib/pubsub-client.js:79:47 at Object.trigger (/usr/local/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/buster-capture-server/node_modules/faye/node/faye-node.js:383:19) at Object.distributeMessage (/usr/local/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/buster-capture-server/node_modules/faye/node/faye-node.js:666:30) at Object._deliverMessage (/usr/local/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/buster-capture-server/node_modules/faye/node/faye-node.js:1065:20) at Object.<anonymous> (/usr/local/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/buster-capture-server/node_modules/faye/node/faye-node.js:1004:12) Firefox 16.0, Linux:
How to write the right test with this structure?