Throw exception on multiple calls to jasmine.Ajax.uninstall.

Running multiple tests under Karma showed some race condition behavior.
This commit is contained in:
Robert Stewart 2015-08-18 10:29:02 -06:00
parent 8b68db5163
commit 056f96c935
2 changed files with 17 additions and 0 deletions

View File

@ -26,6 +26,20 @@ describe("mockAjax", function() {
expect(sequentialInstalls).not.toThrow();
});
it("does throw an error if uninstalled without a current install", function() {
var fakeXmlHttpRequest = jasmine.createSpy('fakeXmlHttpRequest'),
fakeGlobal = { XMLHttpRequest: fakeXmlHttpRequest },
mockAjax = new window.MockAjax(fakeGlobal);
function sequentialUninstalls() {
mockAjax.install();
mockAjax.uninstall();
mockAjax.uninstall();
}
expect(sequentialUninstalls).toThrow();
});
it("does not replace XMLHttpRequest until it is installed", function() {
var fakeXmlHttpRequest = jasmine.createSpy('fakeXmlHttpRequest'),
fakeGlobal = { XMLHttpRequest: fakeXmlHttpRequest },

View File

@ -15,6 +15,9 @@ getJasmineRequireObj().MockAjax = function($ajax) {
};
this.uninstall = function() {
if (global.XMLHttpRequest !== mockAjaxFunction) {
throw "MockAjax not installed. Race conditions between running tests may be uninstalling MockAjax early.";
}
global.XMLHttpRequest = realAjaxFunction;
this.stubs.reset();