From 6d0e19343a6180fb8f5c50d843dd15feeb1f49f3 Mon Sep 17 00:00:00 2001 From: Nick Uraltsev Date: Sat, 26 Nov 2016 18:17:21 -0800 Subject: [PATCH] Fixing bug with custom intances and global defaults --- lib/axios.js | 7 ++++--- lib/core/Axios.js | 6 +++--- test/specs/defaults.spec.js | 23 +++++++++++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/lib/axios.js b/lib/axios.js index aa741f0..ed1f519 100644 --- a/lib/axios.js +++ b/lib/axios.js @@ -3,6 +3,7 @@ var utils = require('./utils'); var bind = require('./helpers/bind'); var Axios = require('./core/Axios'); +var defaults = require('./defaults'); /** * Create an instance of Axios @@ -24,14 +25,14 @@ function createInstance(defaultConfig) { } // Create the default instance to be exported -var axios = createInstance(); +var axios = createInstance(defaults); // Expose Axios class to allow class inheritance axios.Axios = Axios; // Factory for creating new instances -axios.create = function create(defaultConfig) { - return createInstance(defaultConfig); +axios.create = function create(instanceConfig) { + return createInstance(utils.merge(defaults, instanceConfig)); }; // Expose Cancel & CancelToken diff --git a/lib/core/Axios.js b/lib/core/Axios.js index 5ace5cb..cda4b5d 100644 --- a/lib/core/Axios.js +++ b/lib/core/Axios.js @@ -10,10 +10,10 @@ var combineURLs = require('./../helpers/combineURLs'); /** * Create a new instance of Axios * - * @param {Object} defaultConfig The default config for the instance + * @param {Object} instanceConfig The default config for the instance */ -function Axios(defaultConfig) { - this.defaults = utils.merge(defaults, defaultConfig); +function Axios(instanceConfig) { + this.defaults = instanceConfig; this.interceptors = { request: new InterceptorManager(), response: new InterceptorManager() diff --git a/test/specs/defaults.spec.js b/test/specs/defaults.spec.js index f912d89..de19b6a 100644 --- a/test/specs/defaults.spec.js +++ b/test/specs/defaults.spec.js @@ -136,4 +136,27 @@ describe('defaults', function () { }); }); + it('should be used by custom instance if set before instance created', function (done) { + axios.defaults.baseURL = 'http://example.org/'; + var instance = axios.create(); + + instance.get('/foo'); + + getAjaxRequest().then(function (request) { + expect(request.url).toBe('http://example.org/foo'); + done(); + }); + }); + + it('should be used by custom instance if set after instance created', function (done) { + var instance = axios.create(); + axios.defaults.baseURL = 'http://example.org/'; + + instance.get('/foo'); + + getAjaxRequest().then(function (request) { + expect(request.url).toBe('http://example.org/foo'); + done(); + }); + }); }); -- GitLab