diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 579831314de4..b7ae6d869c6e 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1628,7 +1628,7 @@ function MockHttpExpectation(method, url, data, headers) { if (!url) return true; if (angular.isFunction(url.test)) return url.test(u); if (angular.isFunction(url)) return url(u); - return url == u; + return (url == u || this.compareUrl(u)); }; this.matchHeaders = function(h) { @@ -1646,6 +1646,15 @@ function MockHttpExpectation(method, url, data, headers) { } return data == d; }; + + this.getUrlParams = function (u){ + var params = u.slice(u.indexOf('?') + 1).split('&'); + return params.sort(); + }; + + this.compareUrl = function (u){ + return (url.slice(0,url.indexOf('?')) == u.slice(0,u.indexOf('?')) && this.getUrlParams(url).join() == this.getUrlParams(u).join()) + }; this.toString = function() { return method + ' ' + url; diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js index 711b3c09390f..0859a042a2d1 100644 --- a/test/ngMock/angular-mocksSpec.js +++ b/test/ngMock/angular-mocksSpec.js @@ -1515,6 +1515,11 @@ describe('ngMock', function() { expect(exp.match('GET', 'a/x')).toBe(false); }); + it('should match url with same query params, but different order', function() { + var exp = new MockHttpExpectation('GET', 'www.example.com/x/y?a=b&c=d&e=f'); + + expect(exp.matchUrl('www.example.com/x/y?e=f&c=d&a=b')).toBe(true); + }); it('should accept url as function', function() { var urlValidator = function(url) {