FYI: HTTP mocking lib (alpha) at https://lolg.it/herby/znock
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 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
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.
Credits: Uses Mocketry's `ZnClient new stub will: ...` to set up mocked client; thanks Denis Kudriashov. Herby
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 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
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
This cool. Because I wanted to use that in one test with a project with my son. What is the license? Where is the code? On Tue, Jan 30, 2018 at 11:31 PM, Herbert VojÄÃk <herby@mailbox.sk> 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 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
License... ah I forgot to put it there... it'll be MIT. Code is, as pointed out in subject, is at https://lolg.it/herby/znock. As I said, beware, wip (but working for simple positive scenarios). Herby Stephane Ducasse wrote:
This cool. Because I wanted to use that in one test with a project with my son. What is the license? Where is the code?
On Tue, Jan 30, 2018 at 11:31 PM, Herbert VojÄÃk<herby@mailbox.sk> 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 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
'f oo.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
participants (2)
-
Herbert VojÄÃk -
Stephane Ducasse