読者です 読者をやめる 読者になる 読者になる

mmag

ハマったことメモなど

ExUnitでdescribeが使えるようになった

昨日は小言を並べました。

ついさっきElixir 1.3.0-rc.0がリリースされていることを発見しました。

github.com

変更点を眺めていると、気になる一文が!!

[ExUnit] Support for bundling tests together with describe/2

なんと!!

試す

こんな風に使います。特に不自然な点はありません。

defmodule SampleTest do
  use ExUnit.Case

  describe "the function" do
    test "works with valid arguments" do
      ...
    end

    test "raise when invalid arguments are given" do
      ...
    end
  end
end

ただし、describe/2の内側にdescribe/2をネストさせることはできないようです。

また、named setupという機能も追加されていて、setupにatomatomのリストを渡せるようになりました。 それをdescribeの中で指定すると、DRYでいい感じにテストが書けそうです。

defmodule SampleTest do
  use ExUnit.Case

  describe "the feature" do
    setup [:do_something_1, :do_something_2]

    test "works", context do
      ...
    end
  end

  defp do_something_1(context) do
    ...
  end
end

テーマはFB matteをベースにしてます。作者さんに感謝を込めて。