Elixir Language
Doctests
Zoeken…
Invoering
Wanneer u uw code documenteert met @doc
, kunt u codevoorbeelden geven zoals:
# myproject/lib/my_module.exs
defmodule MyModule do
@doc """
Given a number, returns `true` if the number is even, otherwise `false`.
## Example
iex> MyModule.even?(2)
true
iex> MyModule.even?(3)
false
"""
def even?(number) do
rem(number, 2) == 0
end
end
U kunt de codevoorbeelden als testgevallen toevoegen aan een van uw testpakketten:
# myproject/test/doc_test.exs
defmodule DocTest do
use ExUnit.Case
doctest MyModule
end
Vervolgens kunt u uw tests uitvoeren met een mix test
.
HTML-documentatie genereren op basis van doctest
Omdat het genereren van documentatie gebaseerd is op markdown, moet u 2 dingen doen:
1 / Schrijf uw doctest en maak uw doctest-voorbeelden duidelijk om de leesbaarheid te verbeteren (het is beter om een kop te geven, zoals "voorbeelden" of "tests"). Vergeet bij het schrijven van uw tests niet om 4 spaties toe te voegen aan uw testcode zodat deze wordt opgemaakt als code in de HTML-documentatie.
2 / Voer vervolgens "mix docs" in de console in de root van uw elixir-project in om de HTML-documentatie te genereren in de doc-directory in de root van uw elixir-project.
$> mix docs
Doctests met meerdere regels
U kunt een multiline-doctest uitvoeren door '...>' te gebruiken voor de regels na de eerste
iex> Foo.Bar.somethingConditional("baz")
...> |> case do
...> {:ok, _} -> true
...> {:error, _} -> false
...> end
true