Backbone と Require.js を使用しています。すべてがうまく機能しますが、アプリケーションにいくつかの単体テストを追加したいと思います。Qunit.js を使用することにしました。
main.jsファイルで、新しいオブジェクトを作成しますEventsView
。
require.config({
paths: {
jquery: 'libs/jquery',
underscore: 'libs/underscore',
backbone: 'libs/backbone',
qunit: 'test/libs/qunit-1.10.0
}
});
require(['view/eventsView',
'test/eventsView_test',
'test/eventView_test' ], function(EventsView){
var events = new EventsView; //here I create first object my View
});
eventsView.jsでメイン ビューをレンダリングします initialize
define(['jquery',
'backbone',
'underscore',
'collection/eventC',
'model/eventM',
'view/eventView'], function($, Backbone,_,EventC,EventM, EventView,){
var EventsView = Backbone.View.extend({
el: $(".contener"),
initialize: function(){
this.render();
},
....//other functions
});
return EventsView;
});
したがって、他のファイルeventsView_test.jsでこのビューから関数を呼び出す必要があります。ビューが再度レンダリングされるため、このようにすることはできません。
define(['jquery','qunit','view/eventsView'], function($,qunit,EventsView){
//var eventsView = new EventsView(); // I can't create object here
test( "first_test_func", function() {
var result = eventsView.first_test_func(2,2);
equal( result, 4, "2 square equals 4" );
});
私は何をすべきか?ある種のシングルトンまたは何か他のものが必要ですか?