markdown_test alternatives and similar packages
Based on the "Testing" category.
Alternatively, view markdown_test alternatives based on common mentions on social networks and blogs.
-
bypass
Bypass provides a quick way to create a custom plug that can be put in place instead of an actual HTTP server to return prebaked responses to client requests. -
mix_test_interactive
Interactive watch mode for Elixir's mix test. https://hexdocs.pm/mix_test_interactive/ -
mecks_unit
A simple Elixir package to elegantly mock module functions within (asynchronous) ExUnit tests using Erlang's :meck library
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of markdown_test or a related project?
README
MarkdownTest
Test the Elixir code in your markdown!
Usage
Add :markdown_test
as a dependency in your mix.exs
file:
# mix.exs
defp deps do
[
{:markdown_test, "0.1.2", only: :test}
]
end
In any test module, use MarkdownTest
to pull in the test_markdown/1
macro and call it for your markdown file:
defmodule MyLibraryTest do
use MarkdownTest
test_markdown("README.md")
end
Then add some Elixir code to test in your markdown file.
The format roughly resembles that of a doctest
.
In order to be picked up, a code block must be between the following markdown comment tags:
<!--- MARKDOWN_TEST_START -->
...code
<!--- MARKDOWN_TEST_END -->
.
Examples
<!--- MARKDOWN_TEST_START -->
iex> 1 + 2
3
<!--- MARKDOWN_TEST_END -->
The expression and expected values can span multiple lines:
<!--- MARKDOWN_TEST_START -->
iex> a = %{cool: :beans}
...> b = %{beans: :cool}
...> Map.merge(a, b)
%{
cool: :beans,
beans: :cool
}
<!--- MARKDOWN_TEST_END -->
You can also include any setup code that needs to be run prior to testing the code:
<!--- MARKDOWN_TEST_START -->
defmodule MyModule do
def add(x, y), do: x + y
end
iex> MyModule.add(1, 2)
3
<!--- MARKDOWN_TEST_END -->
markdown_test
will assert that the expression and the expected value match according to Elixir's pattern matching.
Therefore, you can write a test like this:
<!--- MARKDOWN_TEST_START -->
defmodule MyModule do
def big_result do
{:ok, List.duplicate("hey", 1000)}
end
end
iex> MyModule.big_result()
{:ok, ["hey" | _]}
<!--- MARKDOWN_TEST_END -->
If you don't add any assertion code, markdown_test
will just verify that the code snippet compiles, like:
<!--- MARKDOWN_TEST_START -->
%{
this: %{
"should" => :compile
}
}
<!--- MARKDOWN_TEST_END -->