JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://backbonejs.org/backbone-min.js"></script>
<script src="http://marionettejs.com/downloads/backbone.marionette.min.js"></script>
<script src="http://code.jquery.com/qunit/qunit-1.19.0.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.19.0.css">
<div id="view"></div>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
CSS
#view {
margin: 50px;
}
JavaScript
var Model = Backbone.Model.extend({
defaults: {
value: 0
}
});
var View = Backbone.View.extend({
template: _.template('<input value="<%= value %>">'),
events: {
'blur input': 'inputChanged'
},
inputChanged: function(evt) {
this.model.set('value', $(evt.currentTarget).val());
},
render: function() {
return this.$el.html(this.template(this.model.attributes));
}
});
QUnit.testStart(function( ) {
console.log( "Now running: Backbone View tests");
});
module("Model test", {
setup: function() {
},
teardown: function() {
$('#qunit-fixture').html("");
}
});
test("testViewChangingModelWhenInputChanges", function(assert) {
var newInputValue = '123';
var model = new Model();
var view = new View({model: model});
$('#qunit-fixture').append(view.render());
$('#qunit-fixture input').val(newInputValue).trigger('blur');
assert.equal(newInputValue, view.model.get('value'));
});