Herbert Vojčík wrote:
Hi! I started with a rudimentary HTTP mocking lib (adding features as needed) inspired by nock, but using the existing ZnClient / ZnRequest / ZnResponse api for mocking. Atm the feature are very basic (no filtering, matching only by host and scheme), but there it is for the interested. Usage: setUp "other stuff" Znock default intercept tearDown "other stuff" Znock default verify testFooBar 'https://foo.bar' znock url: '/api/v0/info'; get; ok: (ZnEntity json: self sampleInfoResponse). "code that should get https://foo.bar/api/v0/info" The setUp starts and cleans the mocker; the test case sets up the expectation that GET https://foo.bar/api/v0/info will occur and defines the response; tearDown checks that that GET actually appeared and fails if not. DNU w/ whitelisting is used to reply certain ZnClient messages to set up
s/reply/replay/
the expectation, ZnResponse class messages to create the response and ZnResponse messages to fill it further. So you can 'foo.bar' znock https; url: '/api/v0/info'; get; notModified. if you like it this way or 'foo.bar' znock url: '/api/v0/info'; get; notModified. to allow both http and https; eventually 'foo.bar/api/v0/info' znock get; notModified. if you want it shorter; mocking multiple req/res pair should work (not tested), as in 'foo.bar' znock url: '/api/v0/info'; get; notModified; url: '/api/v0/last'; get; ok: (ZnEntity textCRLF: 'herby'). Both must appear (in any order) for verify to be happy. Herby