I am trying to test a real ajax request with jasmine 2.3.4 but I don't know how to handle the ajax call. My code is something like
describe("testing user-info calls", function() {
it("should make a real AJAX request", function () {
var callback = jasmine.createSpy();
$.ajax({
type: "GET",
url: "data/userinfo/username",
async: false,
success: callback
});
expect(callback).toHaveBeenCalledWith('Antonio');
});
});
Check the asynchronous documentation, it should do what you're after.
describe("testing user-info calls", function() {
it("should make a real AJAX request", function (done) {
$.ajax({
type: "GET",
url: "data/userinfo/username",
async: false,
success: function(arg) {
expect(arg).toEqual('Antonio');
done();
});
});
});
});
Alternatively, if you don't actually need to hit the server, you could use sinon.js to use a fakeServer:
beforeEach(function() {
server = sinon.fakeServer.create();
});
afterEach(function () {
server.restore();
});
describe("testing user-info calls", function() {
it("should make a real AJAX request", function () {
server.respondWith("GET", "data/userinfo/username",
[200, { "Content-Type": "text" },
'Antonio']);
var callback = jasmine.createSpy();
$.ajax({
type: "GET",
url: "data/userinfo/username",
async: false,
success: callback
});
server.respond();
expect(callback).toHaveBeenCalledWith('Antonio');
});
});