Elixir:Doctest,APIドキュメントに直接テストを記述する
1691 ワード
クイックハンド
モジュール
Doctest
の作成、およびテストドキュメントdefmodule Doctest do
@doc """
## Examples
iex> Doctest.add(1, 2)
3
"""
def add(a, b) do
:not_implemented
end
end
テストコードを作成し、ファイル
tests/doctest_test.exs
に保存defmodule DoctestTest do
use ExUnit.Case, async: true
doctest Doctest
end
テストの実行
➜ mix test
lib/doctest.ex:9: warning: variable a is unused
lib/doctest.ex:9: warning: variable b is unused
Compiled lib/doctest.ex
1) test doc at Doctest.add/2 (1) (DoctestTest)
test/doctest_test.exs:3
Doctest failed
code: Doctest.add(1, 2) === 3
lhs: :not_implemented
stacktrace:
lib/doctest.ex:6: Doctest (module)
.
Finished in 0.1 seconds (0.1s on load, 0.00s on tests)
2 tests, 1 failure
Randomized with seed 301161
次に、
Doctest
モジュールのadd/2
関数を事前に実行し、ここでテストを実行します.defmodule Doctest do
@doc """
## Examples
iex> Doctest.add(1, 2)
3
"""
def add(a, b) do
a + b
end
end
もう一度テストして、テストが合格したのを見ました.
➜ mix test
Compiled lib/doctest.ex
..
Finished in 0.1 seconds (0.1s on load, 0.00s on tests)
2 tests, 0 failures
Randomized with seed 292239
注意点
iex>
...>
で改行することができ、IEx
に複数行コードを入力するのと同様であるが、(1)
のような番号はない:iex(1)> defmodule A do
...(1)> IO.puts "Create a module: A"
...(1)> end