From 4c0e93aecea47b95395d3f4af8947c9be68626cc Mon Sep 17 00:00:00 2001 From: Trek Glowacki Date: Thu, 25 Aug 2016 11:14:27 -0500 Subject: [PATCH 1/2] Warn on second new Pretender --- pretender.js | 9 +++++++-- test/creation_test.js | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/pretender.js b/pretender.js index 56b0f89..805d08f 100644 --- a/pretender.js +++ b/pretender.js @@ -99,7 +99,7 @@ function Pretender(/* routeMap1, routeMap2, ...*/) { // capture xhr requests, channeling them into // the route map. - self.XMLHttpRequest = interceptor(this); + self.XMLHttpRequest = interceptor(this, this._nativeXMLHttpRequest); // 'start' the server this.running = true; @@ -110,7 +110,7 @@ function Pretender(/* routeMap1, routeMap2, ...*/) { } } -function interceptor(pretender) { +function interceptor(pretender, nativeRequest) { function FakeRequest() { // super() FakeXMLHttpRequest.call(this); @@ -237,6 +237,11 @@ function interceptor(pretender) { }; FakeRequest.prototype = proto; + + if (nativeRequest.prototype._passthroughCheck) { + throw new Error('You created a second Pretender instance while there already one running. ' + + 'Running two Pretender servers at once will lead to unexpected results!'); + } return FakeRequest; } diff --git a/test/creation_test.js b/test/creation_test.js index 5c6bd17..095c9f4 100644 --- a/test/creation_test.js +++ b/test/creation_test.js @@ -2,6 +2,26 @@ var pretender; var describe = QUnit.module; var it = QUnit.test; +describe('pretender creation - without shutdown', function(config) { + var secondPretender; + + config.beforeEach(function() { + pretender = new Pretender(); + }); + + config.afterEach(function() { + pretender.shutdown(); + }); + + test('an error is thrown when you start a new pretender while another one is running', function(assert) { + var message = 'You created a second Pretender instance while there ' + + 'already one running. Running two Pretender servers at once will lead to unexpected results!'; + assert.throws(function() { + new Pretender(); + }, message); + }); +}); + describe('pretender creation', function(config) { config.afterEach(function() { if (pretender) { @@ -55,3 +75,4 @@ describe('pretender creation', function(config) { }); }); + From 87dcbab89cbeb158f4b4cda067fd5abf0373644c Mon Sep 17 00:00:00 2001 From: Trek Glowacki Date: Thu, 6 Oct 2016 10:01:49 -0500 Subject: [PATCH 2/2] Improve error message --- pretender.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pretender.js b/pretender.js index 805d08f..6c45817 100644 --- a/pretender.js +++ b/pretender.js @@ -239,8 +239,9 @@ function interceptor(pretender, nativeRequest) { FakeRequest.prototype = proto; if (nativeRequest.prototype._passthroughCheck) { - throw new Error('You created a second Pretender instance while there already one running. ' + - 'Running two Pretender servers at once will lead to unexpected results!'); + throw new Error('You created a second Pretender instance while there was already one running. ' + + 'Running two Pretender servers at once will lead to unexpected results!' + + 'Please call .shutdown() on your instances when you no longer need them to respond.'); } return FakeRequest; }