Closest to Zero
by prakgarnly
HTML
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine-html.js"></script>
<title>Jasmine Spec Runner</title>
JavaScript
var model = {
find : function(term){
return[{id:1},{id:2},{id:4},{id:5}];
},
findOne : function(term){
return {id:3};
},
update : function(data, values){
return data;
}
}
var control = {
data : [],
init : function(myModel){
this.data = myModel.find('3');
}
}
/* */
describe('Jasmine Spy/Mock exercise', function () {
it('has no spies and calls the real functions', function () {
var mine = control;
mine.init(model)
expect(mine.data.length).toBe(4);
expect(mine.data[0].id).toBe(1);
});
it('spies and returns faked object', function () {
spyOn(model, 'find').andReturn([{id:4}]);
var mine = control;
mine.init(model)
expect(mine.data.length).toBe(1);
expect(mine.data[0].id).toBe(4);
expect(model.find).toHaveBeenCalledWith('3');
});
it('spy and call a function', function () {
spyOn(model, 'find').andCallFake(function(term){
return [{id:56}];
});
var mine = control;
mine.init(model)
expect(mine.data.length).toBe(1);
expect(mine.data[0].id).toBe(56);
expect(model.find).toHaveBeenCalledWith('3');
});
it('spy and call thru', function () {
spyOn(model, 'find').andCallThrough();
var mine = control;
mine.init(model)
expect(mine.data.length).toBe(4);
expect(mine.data[0].id).toBe(1);
expect(model.find).toHaveBeenCalledWith('3');
});
});
// load jasmine htmlReporter
$(function() {
var env = jasmine.getEnv();
env.addReporter(new jasmine.HtmlReporter());
env.execute();
});