Elixir:
テストの作成
方法:
Elixirは、非常に強力で使いやすい組み込みテストフレームワークとしてExUnitを使用します。基本的な例を挙げると以下の通りです:
- Elixirプロジェクトの
test
ディレクトリに新しいテストファイルを作成します。たとえば、MathOperations
というモジュールをテストしている場合、テストファイルはtest/math_operations_test.exs
となります。
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# これは、加算関数をチェックするためのシンプルなテストケースです
test "二つの数字の加算" do
assert MathOperations.add(1, 2) == 3
end
end
テストを実行するには、ターミナルでmix test
コマンドを使用します。MathOperations.add/2
関数が正しく2つの数字を加算すると、以下のような出力が表示されます:
..
0.03秒で終了
1テスト、0失敗
外部サービスやAPIを取り扱うテストの場合、実際のサービスを使用せずに済むようmox
などのモックライブラリを使用すると良いでしょう:
mix.exs
の依存関係にmox
を追加します:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# 他の依存関係...
]
end
- テストヘルパー(
test/test_helper.exs
)にモックモジュールを定義します:
Mox.defmock(HTTPClientMock, for: HTTPClientBehaviour)
- テストケースでモックを使用します:
# test/some_api_client_test.exs
defmodule SomeAPIClientTest do
use ExUnit.Case
import Mox
# この設定により、想定された通りこのモックが呼ばれたかどうかをMoxに検証させます
setup :verify_on_exit!
test "APIからデータを取得する" do
# モックレスポンスを設定
expect(HTTPClientMock, :get, fn _url -> {:ok, "モックされたレスポンス"} end)
assert SomeAPIClient.get_data() == "モックされたレスポンス"
end
end
mix test
を実行する際、この設定により、ユニットテストを実際の外部依存性から分離して、自身のコードの振る舞いに集中できます。このパターンは、テストを迅速に実行し、外部サービスの状態やインターネット接続状況に関わらず、テストの信頼性を保証します。