4

私のプロジェクトの構造である busterjs+requirejs+backbone の組み合わせにほとんど問題はありませんでした:

js-src

--lib //jquery、require など

--ビュー

--モデル

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

バスターテストを使用して実行すると、次のようになります。

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: 

その構造で適切なテストを書く方法は?

4

2 に答える 2

0

昨日の時点で Buster.js は初めてですが、次の 4 つの部分の提案を追加します。

1.) 「buster.js」の「extensions: [require('buster-amd')]」のコメントを外します

2.) 「require.config」から「baseUrl」を削除します

3.) ライブラリへのパスを明示的に設定します。たとえば、「jplugins: 'lib/jquery.plugins'」は「jplugins: 'js-src/lib/jquery.plugins'」になります。これは、モデル、コレクション、ビュー、および「 js-src/' ディレクトリ。

require.config({
  paths: {
    jquery: 'js-src/lib/jquery',
    views: 'js-src/lib/views',
    somerootfile: 'js-src/somerootfile'

4.) テストを次のように変更します ...

describe('some test', function(run) {
    require(['models/your_model'], function(YourModel) {
        run(function() {
            it('should load', function() {
                var yourModel = new YourModel();
                    yourModel.set('cat', 'dog');
                expect(YourModel.get('cat')).toEqual('dog');
            });
        });
    });
});

問題は、'require.config' の 'baseUrl' が Buster.js を混乱させ、'buster.js' で設定された 'rootPath' を尊重しないように指示しているようです。

于 2013-06-17T14:53:20.667 に答える
0

ブラウザ テストを実行し、コンソールで出力を確認すると役立ちます。その中のエラーメッセージは、通常、より表現力豊かです。また、buster 構成から autoRun ディレクティブを削除し、「buster-amd」拡張機能を再度有効にする必要があります。

于 2012-11-24T19:26:27.487 に答える