Elixir:
テストの作成

方法:

Elixirは、非常に強力で使いやすい組み込みテストフレームワークとしてExUnitを使用します。基本的な例を挙げると以下の通りです:

  1. 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などのモックライブラリを使用すると良いでしょう:

  1. mix.exsの依存関係にmoxを追加します:
defp deps do
  [
    {:mox, "~> 1.0.0", only: :test},
    # 他の依存関係...
  ]
end
  1. テストヘルパー(test/test_helper.exs)にモックモジュールを定義します:
Mox.defmock(HTTPClientMock, for: HTTPClientBehaviour)
  1. テストケースでモックを使用します:
# 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を実行する際、この設定により、ユニットテストを実際の外部依存性から分離して、自身のコードの振る舞いに集中できます。このパターンは、テストを迅速に実行し、外部サービスの状態やインターネット接続状況に関わらず、テストの信頼性を保証します。