2

私はbackbone.js(およびJavaScript全般)にかなり慣れていないため、Jasmineを使用してモデルを単体テストしようとしています(jasmine-nodeこれに使用しています)。私のディレクトリ構造は次のとおりです。

project/
      src/models/mymodel.js
      spec/mymodel.spec.js
      lib/backbone-min.js

さて、私の質問は、backbone.js を html ページに含めずに、モデルと仕様で使用できるようにするにはどうすればよいですか? js コードを html から分離したままにして、jasmine-node でテストを実行できるようにしたい

4

1 に答える 1

0

はい、node.js バックボーン (およびアンダースコア) モジュールを使用することで、必要に応じてモデルでそれらを要求できます。たとえば、次のようになります。

/models/car.js

var args = typeof exports !== 'undefined' ? [exports, require('Backbone')] : [window, window.Backbone];

(function (exports, backbone){

    exports.Car = backbone.Model.extend({
        onHornPress: function () {
            return 'HONK';
        }
    });

}).apply(undefined, args);

/specs/car.spec.js

var Backbone = require('Backbone'),
    Car = require('../models/car.js').Car;

describe("when the horn is pressed", function(){
    var car;

    beforeEach(function(){
        car = new Car();
    });

    it("should honk.", function(){
        var result = car.onHornPress();
        expect(result).toEqual('HONK');
    });

});

/myapp.html

<html>
<head>
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>
    <script type="text/javascript" src="models/car.js"></script>
</head>
<body>
<script type="text/javascript">

    var car = new Car();

    console.log(car.onHornPress());

</script>
</body>
</html>
于 2012-06-10T16:58:48.607 に答える