diff --git a/lib/mock/http_backend.dart b/lib/mock/http_backend.dart index 27c773563..b7a5623c0 100644 --- a/lib/mock/http_backend.dart +++ b/lib/mock/http_backend.dart @@ -138,14 +138,23 @@ class MockHttpBackend implements HttpBackend { return c.future; } - _createResponse(status, data, headers) { - if (status is Function) return status; + _createResponse(statusOrDataOrFunction, dataOrHeaders, headersOrNone) { + if (statusOrDataOrFunction is Function) return statusOrDataOrFunction; + var status, data, headers; + if (statusOrDataOrFunction is num) { + status = statusOrDataOrFunction; + data = dataOrHeaders; + headers = headersOrNone; + } else { + status = 200; + data = statusOrDataOrFunction; + headers = dataOrHeaders; + } + if (data is Map || data is List) { + data = JSON.encode(data); + } - return ([a,b,c,d,e]) { - return status is num - ? [status, data, headers] - : [200, status, data]; - }; + return ([a,b,c,d,e]) => [status, data, headers]; } diff --git a/test/mock/http_backend_spec.dart b/test/mock/http_backend_spec.dart index e89e5c74c..65ff89b19 100644 --- a/test/mock/http_backend_spec.dart +++ b/test/mock/http_backend_spec.dart @@ -42,6 +42,23 @@ main() => describe('MockHttpBackend', () { }); + it('should respond with JSON', inject((Logger logger) { + hb.when('GET', '/url1').respond(200, ['abc'], {}); + hb.when('GET', '/url2').respond(200, {'key': 'value'}, {}); + + + callback.andCallFake((status, response) { + expect(status).toBe(200); + logger(response); + }); + + hb('GET', '/url1', null, callback); + hb('GET', '/url2', null, callback); + hb.flush(); + expect(logger).toEqual(['["abc"]', '{"key":"value"}']); + })); + + it('should throw error when unexpected request', () { hb.when('GET', '/url1').respond(200, 'content'); expect(() {