Elixir Language
Doctests
Sök…
Introduktion
När du dokumenterar din kod med @doc
kan du @doc
kodexempel på så sätt:
# 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
Du kan lägga till kodexemplen som testfall i en av dina testsviter:
# myproject/test/doc_test.exs
defmodule DocTest do
use ExUnit.Case
doctest MyModule
end
Sedan kan du sedan köra dina test med mix test
.
Generera HTML-dokumentation baserad på doctest
Eftersom generering av dokumentation är baserad på markdown måste du göra två saker:
1 / Skriv din doctest och gör dina doctest-exempel tydliga för att förbättra läsbarheten (Det är bättre att ge en rubrik, som "exempel" eller "tester"). När du skriver dina tester, glöm inte att ge fyra mellanslag till testkoden så att den formateras som kod i HTML-dokumentationen.
2 / Ange sedan "mix docs" i konsolen vid roten till ditt elixir-projekt för att generera HTML-dokumentationen i doc-katalogen som finns i roten till ditt elixir-projekt.
$> mix docs
Multiline doctests
Du kan göra en multiline doctest genom att använda '...>' för raderna som följer den första
iex> Foo.Bar.somethingConditional("baz")
...> |> case do
...> {:ok, _} -> true
...> {:error, _} -> false
...> end
true