Mock – An API creation and testing utility: Examples
115 points
14 hours ago
| 8 comments
| dhuan.github.io
| HN
BinaryIgor
13 hours ago
[-]
Interesting, a few questions: 1. How hard/easy is it to make responses dynamic, i.e. to use something from the request data like query/path param or a body to execute function instead of hardcoding the response 2. What's the main motivation for creating this tool? I feel like every programming language have similar tool already - WireMock for Java etc. Why should people switch?
reply
dhuan_
13 hours ago
[-]
Hi thanks for the feedback checking out the project.

> What's the main motivation for creating this tool?

Similar tools exist out there for sure, but they are either complex (more than I wish they'd be) or somehow require you to use a specific programming languages. Mock lets you accomplish this without telling you which language you should use.

Also if you're using mock inside CI pipelines, it also helps the fact that you can just download a executable tool that does not require you the java platform or any other dependency.

> How hard/easy is it to make responses dynamic, i.e. to use something from the request data like query/path param or a body to execute function instead of hardcoding the response

With mock you can use shell scripts as "request handlers". With that said, capturing a query param or a JSON field from the request body is as simple as:

> $ USER_NAME=$(mock get-payload user.name)

> $ SOME_QUERY_STRING_PARAM=$(mock get-query foo)

You can see more of this topic here: https://dhuan.github.io/mock/shell_scripts.html

> I feel like every programming language have similar tool already - WireMock for Java etc. Why should people switch?

True. If people are happy with these tools and needing to use java (or any other lang the tool pulls you into), then there's not much reason to switch.

reply
calrain
12 hours ago
[-]
It frustrates me no end when large commercial web sites fail to store state in URLs. It should be updated when the user clicks the 'submit' button of a page, especially when related to searching.

Some products have these fancy KQL style search parameters but if you forget to 'save the search' within the applications 'Save Search' facility, then when you duplicate a tab the search is lost.

It feels rude when sites ignore the UX improvement by not leveraging the power of URLs to store current state.

reply
dhuan_
11 hours ago
[-]
I think you intended to post here: https://news.ycombinator.com/item?id=45789474
reply
calrain
3 hours ago
[-]
I did :) good pick up!
reply
rirze
11 hours ago
[-]
Did you comment on the wrong post? There’s another post talking about storing state in URLs
reply
siva7
13 hours ago
[-]
> Making an existing API slow can be easily accomplished combining mock’s Base APIs and the delay option.

Ah, it's the "billable hours" variable.

reply
a2800276
13 hours ago
[-]
Wonderful little tool! Something similar has been swirling aronud my head for a while. Thank you for sharing, it looks very useful.
reply
dhuan_
12 hours ago
[-]
Hi, thanks for the feedback! I hope it's useful to you.
reply
cozzyd
13 hours ago
[-]
the name mock has also been used for the RPM build environment tool (https://github.com/rpm-software-management/mock)
reply
dhuan_
12 hours ago
[-]
Hi, thanks for the feedback!

That's true, it's not a very unique name. I started building it, but only months later I thought of making it public. And then never thought of renaming it.

reply
ruguo
14 hours ago
[-]
Does it support Windows? I don’t see a Windows version on the GitHub releases page.
reply
dhuan_
12 hours ago
[-]
Hi! Not yet, unless you use it with containers.
reply
n0n0n4t0r
14 hours ago
[-]
With wsl (or docker desktop), for non production tooling, I don't think it's relevant anymore.

(I'm not saying it's on par with linux, I'm just saying it's usable)

reply
debuggingCode
14 hours ago
[-]
looks like based on linux is the reason
reply
fhduksbegd
11 hours ago
[-]
How does this differ from swagger?
reply
dhuan_
10 hours ago
[-]
Swagger is a tool for API design and documentation.

Mock on the other hand is an actual API creation utility with which you can define endpoints, execute some logic for each endpoint and then return some data to the client. There are other similar features which are covered in the user guide.

Mock is not: - A tool for API Specs or documentation - A GUI tool.

I admit explaining the usefulness of this tool is not the easiest thing.

Any feedback is welcome!

reply
hnBTsd
10 hours ago
[-]
What a great tool! Writing simple scriptable mock apis all for the command line. Very easy to include commands straight into documentation.
reply