jasmine-ajax/spec/javascripts/with-mock-spec.js
2014-07-28 18:38:06 -07:00

40 lines
1.3 KiB
JavaScript

describe("withMock", function() {
var sendRequest = function(fakeGlobal) {
var xhr = new fakeGlobal.XMLHttpRequest();
xhr.open("GET", "http://example.com/someApi");
xhr.send();
};
it("installs the mock for passed in function, and uninstalls when complete", function() {
var xmlHttpRequest = jasmine.createSpyObj('XMLHttpRequest', ['open', 'send']),
xmlHttpRequestCtor = spyOn(window, 'XMLHttpRequest').and.returnValue(xmlHttpRequest),
fakeGlobal = {XMLHttpRequest: xmlHttpRequestCtor},
mockAjax = new window.MockAjax(fakeGlobal);
mockAjax.withMock(function() {
sendRequest(fakeGlobal);
expect(xmlHttpRequest.open).not.toHaveBeenCalled();
});
sendRequest(fakeGlobal);
expect(xmlHttpRequest.open).toHaveBeenCalled();
});
it("properly uninstalls when the passed in function throws", function() {
var xmlHttpRequest = jasmine.createSpyObj('XMLHttpRequest', ['open', 'send']),
xmlHttpRequestCtor = spyOn(window, 'XMLHttpRequest').and.returnValue(xmlHttpRequest),
fakeGlobal = {XMLHttpRequest: xmlHttpRequestCtor},
mockAjax = new window.MockAjax(fakeGlobal);
expect(function() {
mockAjax.withMock(function() {
throw "error";
});
}).toThrow("error");
sendRequest(fakeGlobal);
expect(xmlHttpRequest.open).toHaveBeenCalled();
});
});