mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-31 05:20:27 +00:00
fix(ngMock): fixes httpBackend expectation with body object
Fixes an issue with httpBackend expectations where a given body object may not match the actual request body if its keys are serialized in a different order. Closes #4956
This commit is contained in:
parent
9e89a31b12
commit
4d16472b91
2 changed files with 50 additions and 1 deletions
2
src/ngMock/angular-mocks.js
vendored
2
src/ngMock/angular-mocks.js
vendored
|
|
@ -1572,7 +1572,7 @@ function MockHttpExpectation(method, url, data, headers) {
|
|||
if (angular.isUndefined(data)) return true;
|
||||
if (data && angular.isFunction(data.test)) return data.test(d);
|
||||
if (data && angular.isFunction(data)) return data(d);
|
||||
if (data && !angular.isString(data)) return angular.toJson(data) == d;
|
||||
if (data && !angular.isString(data)) return angular.equals(data, angular.fromJson(d));
|
||||
return data == d;
|
||||
};
|
||||
|
||||
|
|
|
|||
49
test/ngMock/angular-mocksSpec.js
vendored
49
test/ngMock/angular-mocksSpec.js
vendored
|
|
@ -941,6 +941,29 @@ describe('ngMock', function() {
|
|||
});
|
||||
|
||||
|
||||
it('should match data object if specified', function() {
|
||||
hb.when('GET', '/a/b', {a: 1, b: 2}).respond(201, 'content1');
|
||||
hb.when('GET', '/a/b').respond(202, 'content2');
|
||||
|
||||
hb('GET', '/a/b', '{"a":1,"b":2}', function(status, response) {
|
||||
expect(status).toBe(201);
|
||||
expect(response).toBe('content1');
|
||||
});
|
||||
|
||||
hb('GET', '/a/b', '{"b":2,"a":1}', function(status, response) {
|
||||
expect(status).toBe(201);
|
||||
expect(response).toBe('content1');
|
||||
});
|
||||
|
||||
hb('GET', '/a/b', null, function(status, response) {
|
||||
expect(status).toBe(202);
|
||||
expect(response).toBe('content2');
|
||||
});
|
||||
|
||||
hb.flush();
|
||||
});
|
||||
|
||||
|
||||
it('should match only method', function() {
|
||||
hb.when('GET').respond(202, 'c');
|
||||
callback.andCallFake(function(status, response) {
|
||||
|
|
@ -1072,6 +1095,32 @@ describe('ngMock', function() {
|
|||
});
|
||||
|
||||
|
||||
it ('should not throw an exception when parsed body is equal to expected body object', function() {
|
||||
hb.when('GET').respond(200, '', {});
|
||||
|
||||
hb.expect('GET', '/match', {a: 1, b: 2});
|
||||
expect(function() {
|
||||
hb('GET', '/match', '{"a":1,"b":2}', noop, {});
|
||||
}).not.toThrow();
|
||||
|
||||
hb.expect('GET', '/match', {a: 1, b: 2});
|
||||
expect(function() {
|
||||
hb('GET', '/match', '{"b":2,"a":1}', noop, {});
|
||||
}).not.toThrow();
|
||||
});
|
||||
|
||||
|
||||
it ('should throw exception when only parsed body differs from expected body object', function() {
|
||||
hb.when('GET').respond(200, '', {});
|
||||
hb.expect('GET', '/match', {a: 1, b: 2});
|
||||
|
||||
expect(function() {
|
||||
hb('GET', '/match', '{"a":1,"b":3}', noop, {});
|
||||
}).toThrow('Expected GET /match with different data\n' +
|
||||
'EXPECTED: {"a":1,"b":2}\nGOT: {"a":1,"b":3}');
|
||||
});
|
||||
|
||||
|
||||
it("should use when's respond() when no expect() respond is defined", function() {
|
||||
callback.andCallFake(function(status, response) {
|
||||
expect(status).toBe(201);
|
||||
|
|
|
|||
Loading…
Reference in a new issue