6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Elixir mixでテスト書いてみる

Posted at

Elixir mixでテスト書いてみる

動作環境

  • debian 8
  • Elixir 1.6.3

はじめ

自宅でElixirを書いているんですが、テスト書いているので備忘録的にまとめていきます。

ElixirでのTest

ExUnit

ElixirのTest frameworkです。これを使ってTest書いていきます。

mixでのTest

まずはmixでプロジェクトを作成し、ひな形を作ります。

mix new example

mixで作成したプロジェクトにはデフォルトでtestディレクトリができています。

test
 |- example_test.exs
    test_helper.exs

example_test.exsexamplemix new exampleで作成したプロジェクト名になります。
そして、test_helper.exsが実際にテストを行います。

test_helper.exs```
ExUnit.start()


`example_test.exs`に実際にテストを書いていきます。

### 簡単なテストを書く
テストする関数は足し算するだけの関数をテストします。

defmodule Example do
@moduledoc """
Documentation for Example.
"""

@doc """
sum method
"""
def sum(a, b) when is_integer(a) and is_integer(b) do
a + b
end
end

`sum`関数をテストしていきますので`example_test.exs`でテストコードを書いていきます。

example_test.exs

defmodule ExampleTest do
use ExUnit.Case
doctest Example

test "sum def" do
assert Example.sum(1, 2) == 3
refute Example.sum(1, 2) != 3

assert_raise FunctionClauseError, fn ->
  Example.sum("1", 2) == 3
end
assert_raise FunctionClauseError, fn ->
  Example.sum(1, "2") == 3
end
assert_raise UndefinedFunctionError, fn ->
  Example.sum(1) == 3
end

end
end

テスト内容をみていきます。
#### assert
`true`か`false`をテストし結果が`true`であることをテストします。

assert Example.sum(1, 2) == 3 # pass
assert Example.sum(1, 2) == 4 # failures


#### refute
`assert`同様、`true`か`false`をテストするのですが、結果が`false`であることをテストします。

refute Example.sum(1, 2) != 3 # pass
refute Example.sum(1, 2) == 3 # failures

#### assert_raise
テストする内容が`exception`を投げるかどうかテストします。
第一引数では`exception`のエラー内容を指定します。第二引数では実行する関数を指定します。

pass

assert_raise FunctionClauseError, fn ->
Example.sum("1", 2) == 3
end

pass

assert_raise UndefinedFunctionError, fn ->
Example.sum(1) == 3
end


## 終わりに

簡単なアサート系のテストを書いてみました。
`ExUnit`モジュールではアサート以外でも`Callbacks`や`CaptureIO`などあるので、
もっと色々と試してみようと思います。
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?