Qunit Example

by wwwroot

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) {
                console.log(serviceData);
                self.publicData = serviceData;
                privateData = serviceData;
            });
        }
    }
};


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

var target,
serviceStub,
dataMock = [0];
module("model tests", {
    setup: function () {
        serviceStub = new service();
        sinon.stub(serviceStub);
        serviceStub.getData.callsArgWith(0, dataMock);

        target = new model(serviceStub);
    },
    teardown: function () {
        serviceStub.getData.restore();
    }
});

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

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

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

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