This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
| name | age | message | |
|---|---|---|---|
| |
.gitignore | ||
| |
Emakefile | ||
| |
Makefile | ||
| |
README.mkd | ||
| |
Rakefile | ||
| |
ebin/ | ||
| |
priv/ | ||
| |
src/ | ||
| |
test/ |
README.mkd
gen_server_mock.erl - gen_server mocking
Summary
gen_server mocking. This project is functioning but still young.
Example
{ok, Mock} = gen_server_mock:new(),
gen_server_mock:expect_call(Mock, fun(one, _From, _State) -> ok end),
gen_server_mock:expect_call(Mock, fun(two, _From, State) -> {ok, State} end),
gen_server_mock:expect_call(Mock, fun(three, _From, State) -> {ok, good, State} end),
gen_server_mock:expect_call(Mock, fun({echo, Response}, _From, State) -> {ok, Response, State} end),
gen_server_mock:expect_cast(Mock, fun(fish, State) -> {ok, State} end),
gen_server_mock:expect_info(Mock, fun(cat, State) -> {ok, State} end),
ok = gen_server:call(Mock, one),
ok = gen_server:call(Mock, two),
good = gen_server:call(Mock, three),
tree = gen_server:call(Mock, {echo, tree}),
ok = gen_server:cast(Mock, fish),
Mock ! cat,
gen_server_mock:assert_expectations(Mock),
{ok}.
More Examples
See test/src/eunit_gen_server_mock.erl
Usage
Currently three expectations are supported: expect_call, expect_cast, expect_info.
The fun argument takes the same arguments as the respective handle_
gen_server call. However, unlike the handle_ calls, the response should be
one of ok, {ok, NewState}, {ok, Response, NewState}. Anything else will
be considered a failure.
For example:
expect_call(Mock, fun(Request, From, State) -> ok end)expect_cast(Mock, fun(Msg, State) -> {ok, State} end)expect_info(Mock, fun(Info, State) -> {error, State} end)(will raise an error, return{ok, State}for success)
Status
Alpha. API may change depending on feedback. Hosted on Github - patches readily accepted.
Dependencies
skelerl, if you want to run tests- tested with eunit, should work with other libraries in theory
Bugs / Problems
I suspect that one could write a more general process mocking library relatively easily.
References
- Initial blog post
- Work inspired by this post
- Github Repo (Patches readily accepted)
- Mocks Aren't Stubs
Authors
- Nate Murray <nmurray [AT] attinteractive.com> github








