diff --git a/lib/utils.js b/lib/utils.js index a88ec95b..26d710ef 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -149,15 +149,7 @@ function isStream(val) { * @returns {boolean} True if value is a URLSearchParams object, otherwise false */ function isURLSearchParams(val) { - // Object.prototype.toString will return [object Object] for a polyfill - // Hence, we have to use duck typing - return toString.call(val) === '[object URLSearchParams]' || ( - isObject(val) && - isFunction(val.append) && - isFunction(val.delete) && - isFunction(val.get) && - isFunction(val.set) - ); + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; } /** diff --git a/test/specs/__helpers.js b/test/specs/__helpers.js index 80ecc747..8a06d0d2 100644 --- a/test/specs/__helpers.js +++ b/test/specs/__helpers.js @@ -1,6 +1,9 @@ // Polyfill ES6 Promise require('es6-promise').polyfill(); +// Polyfill URLSearchParams +URLSearchParams = require('url-search-params'); + // Import axios axios = require('../../index'); diff --git a/test/specs/requests.spec.js b/test/specs/requests.spec.js index 7c47b5ee..47be0b0e 100644 --- a/test/specs/requests.spec.js +++ b/test/specs/requests.spec.js @@ -1,5 +1,3 @@ -var URLSearchParams = require('url-search-params'); - describe('requests', function () { beforeEach(function () { jasmine.Ajax.install(); diff --git a/test/specs/utils/isX.spec.js b/test/specs/utils/isX.spec.js index 2365b25a..7620f8c8 100644 --- a/test/specs/utils/isX.spec.js +++ b/test/specs/utils/isX.spec.js @@ -1,6 +1,5 @@ var utils = require('../../../lib/utils'); var Stream = require('stream'); -var URLSearchParams = require('url-search-params'); describe('utils::isX', function () { it('should validate Array', function () {