Elixir Language
Doctests
Szukaj…
Wprowadzenie
Kiedy dokumentujesz swój kod za pomocą @doc
, możesz podać przykłady takiego kodu:
# 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
Możesz dodać przykłady kodu jako przypadki testowe do jednego z pakietów testowych:
# myproject/test/doc_test.exs
defmodule DocTest do
use ExUnit.Case
doctest MyModule
end
Następnie możesz uruchomić testy z mix test
.
Generowanie dokumentacji HTML na podstawie doctest
Ponieważ generowanie dokumentacji opiera się na przecenie, musisz zrobić 2 rzeczy:
1 / Napisz swój dokument doctest i wyraź swoje przykłady doctest, aby poprawić czytelność (lepiej podać nagłówek, np. „Przykłady” lub „testy”). Pisząc testy, nie zapomnij podać 4 spacji do kodu testu, aby formatował się on jako kod w dokumentacji HTML.
2 / Następnie wpisz „mix docs” w konsoli w katalogu głównym projektu eliksiru, aby wygenerować dokumentację HTML w katalogu doc znajdującym się w katalogu głównym projektu eliksiru.
$> mix docs
Dokumenty wieloliniowe
Możesz wykonać wieloetapowy doctest, używając „...>” dla wierszy następujących po pierwszym
iex> Foo.Bar.somethingConditional("baz")
...> |> case do
...> {:ok, _} -> true
...> {:error, _} -> false
...> end
true