Elixir Language
Doktests
Suche…
Einführung
Wenn Sie Ihren Code mit @doc
, können Sie Codebeispiele wie @doc
:
# 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
Sie können die Codebeispiele als Testfälle in eine Ihrer Testsuiten einfügen:
# myproject/test/doc_test.exs
defmodule DocTest do
use ExUnit.Case
doctest MyModule
end
Anschließend können Sie Ihre Tests mit dem mix test
.
HTML-Dokumentation basierend auf doctest erstellen
Da das Generieren von Dokumentation auf Markdown basiert, müssen Sie zwei Dinge tun:
1 / Schreiben Sie Ihr Doctest und machen Sie Ihre Doctest-Beispiele klarer, um die Lesbarkeit zu verbessern (Es ist besser, eine Überschrift wie "Beispiele" oder "Tests" zu geben). Vergessen Sie beim Schreiben Ihrer Tests nicht, Ihrem Testcode 4 Leerzeichen zuzuweisen, damit er in der HTML-Dokumentation als Code formatiert wird.
2 / Geben Sie anschließend in der Konsole im Stammverzeichnis Ihres Elixir-Projekts "mix docs" ein, um die HTML-Dokumentation im doc-Verzeichnis im Stammverzeichnis Ihres elixir-Projekts zu generieren.
$> mix docs
Mehrzeilige doctests
Sie können einen mehrzeiligen Doctest durchführen, indem Sie für die folgenden Zeilen '...>' verwenden
iex> Foo.Bar.somethingConditional("baz")
...> |> case do
...> {:ok, _} -> true
...> {:error, _} -> false
...> end
true