Jasmine Fiddle

by Winter Soldier

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine-html.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/boot.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine-ajax/3.3.1/mock-ajax.js"></script>

JavaScript

var usersStore = {
  store: {
    users: []
  },
  get: function() {
    return this.store;
  },
  set: function(key, value) {
    if (key) {
      this.store[key] = value;
    } else {
      console.error("Key required");
    }
  },
  init: function(initObject) {
    this.store.users = initObject;
  }
};

var api = {
  serviceCall: () => {
    $.ajax('').done((data) => {
      usersStore.init(data);
    });
  }
};

describe('test api call', () => {
  it('ajax success', () => {
    expect(true).toBe(true);
    var userObj = [{
      'name': 'StackOverflow'
    }];
    spyOn($, 'ajax').and.callFake((e) => {
      return $.Deferred().resolve(userObj).promise();
    });
    api.serviceCall();
    expect(usersStore.get().users[0].name).toEqual('StackOverflow');
  });
});