backbone.js - Busterjs+requirejs+backbone 怎么写测试?

标签 backbone.js requirejs

我对组合 busterjs+requirejs+backbone 没有什么问题,我的项目结构:

js-src

--lib//jquery、require 等

-- View

- 楷模

-app.js//需要配置并启动应用程序

js(编译与上面相同的结构)

测试

-buster.js

-require-config.js

-test-test.js

需要-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']
    }
  }
});

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;
});

破坏者.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'
  ]
 // extensions: [
 //   require('buster-amd')
 // ]
};

测试-test.js:
buster.spec.expose();
require(['views/View'], function (module) {
  describe("An AMD module", function () {
    it("should work", function () {
      expect(true).toEqual(true);
    });
  });
});

当我使用 buster test 运行它时,我得到:
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: 

如何使用该结构编写正确的测试?

最佳答案

如果您运行浏览器测试并检查控制台中的输出,这将有所帮助。其中的错误消息通常更具表现力。您还应该从 buster 配置中删除 autoRun 指令并重新启用“buster-amd”扩展。

关于backbone.js - Busterjs+requirejs+backbone 怎么写测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12895457/

相关文章:

JavaScript:不会停止执行以下行的回调

javascript - 在优化脚本中嵌入 require.js

RequireJS 在加载所需模块之前不运行数据主脚本

javascript - RequireJS JQuery 垫片不适用于 VS2013

javascript - 在下拉菜单中输入字符时,它会从选项中选择任何随机匹配项并触发更改事件

javascript - 如何使这个发布/订阅代码更具可读性?

javascript - Backbone Js 分部分加载应用程序

php - Backbone +RequireJS : HTML files loaded with RequireJS are interpreted as JS files

backbone.js - 存储/推送到主干模型中的数组

backbone.js - 在 Backbone.js 中,为什么静默更改最终会触发更改事件?