Qunit Example

Regular expression testing with qunit

HTML

<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.12.0.css">
<script src="http://code.jquery.com/qunit/qunit-1.12.0.js"></script>
<script src="http://sinonjs.org/releases/sinon-1.7.1.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>

JavaScript

var service = function () {
    return {
        getData: function (callback) {
            return callback([1, 2, 3, 4, 5]);
        }
    }
};

var model = function (svc) {
    var privateData;
    return {
        publicData: [],
        init: function () {
            var self = this;
            svc.getData(function (serviceData) {
                publicData = serviceData;
                privateData = serviceData;
            });
        }
    }
};


/*test("sinon is with us", function () {
    ok(sinon);
});
*/
var target,
    serviceStub,
    dataMock = [0],
    getDataCallbackMock = function (data) {
        return dataMock;
    };
module("model tests", {
    setup: function () {
        console.log("test start");
        var svc = new service();
        target = new model(svc);
        console.log(target);
        serviceStub = sinon.stub(svc, 'getData').yields(getDataCallbackMock(dataMock));
    },
    teardown: function () {
        serviceStub.restore();
    }
});

test("sinon is with us", function () {
    ok(sinon);
});

test("init makes getData call", function () {
    target.init();
    ok(serviceStub.calledOnce);    
});

test("publicData is populated after service.getData callback", function () {
    target.init();
    equal(model.publicData, dataMock);    
});

test("privateData is populated after service.getData callback", function () {
     ok(false);// untetstable?
});