2015-10-04
週刊Elixirライブラリ2015-16
Elixirのライブラリの解説を週ごとにお届けする記事です。
解説が間違っていた場合には、コメントか@hayabusa333にご連絡くださると嬉しいです。
今回はPowerAssertExについて
# PowerAssertEx is 何?
PowerAssertExは、ma2geさんによって開発されたElixir用のPowerAssertです。
PowerAssert自体はt_wasaさんより作成された単純なアサーションのみで、Assertにて出力された情報をわかりやすく表示するUnitTest用のフレームワークです。
# 実行環境
OS:OS X Yosemite
Erlang:Eshell V6.5, OTP-Version 18
Elixir:v1.0.4
# PowerAssertExの実行を行うための新規プロジェクトの作成
$ mix new my_power_assert_ex $ cd my_power_assert_ex
# HexにてPowerAssertExをインストールするために設定ファイルの記載を行う
$ vim mix.exs
mix.exsの内容は下記となります。
defmodule MyPowerAssertEx.Mixfile do
use Mix.Project
def project do
[app: :my_power_assert_ex,
version: "0.0.1",
elixir: "~> 1.0",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps]
end
# Configuration for the OTP application
#
# Type `mix help compile.app` for more information
def application do
[applications: [:logger]]
end
# Dependencies can be Hex packages:
#
# {:mydep, "~> 0.3.0"}
#
# Or git/path repositories:
#
# {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
#
# Type `mix help deps` for more examples and options
defp deps do
[{:power_assert, "~> 0.0.1"}]
end
end
# 依存関係の解決を行います。
$ mix deps.get
# PowerAssert を確認するために Unit Testを記載
$ vim test/my_power_assert_ex_test.exs
defmodule MyPowerAssertExTest do
use PowerAssert
setup do
{:ok, hello: "world"}
end
# PowerAssertEx を確認するための失敗するテストを確認
test "Enum.at should return the element at the given index" do
array = [1, 2, 3, 4, 5, 6]
index = 2
two = 2
assert array |> Enum.at(index) == two
end
setup do
{:ok, hello: "world"}
end
# 文字列比較のテストを失敗させた場合
test "setup. assert with a match", %{hello: hello} do
assert hello == "world1"
end
# PowerAssert なので assert_raise は意味がありませんがテストは実施可能です。
test "defp one. assert with a match" do
assert_raise FunctionError, fn ->
MyExUnit.onep == 1
end
end
end
# PowerAssertExを使ってみる
$ mix test
1) test setup. assert with a match (MyPowerAssertExTest)
test/my_power_assert_ex_test.exs:21
hello == "world1"
|
"world"
stacktrace:
test/my_power_assert_ex_test.exs:22
2) test Enum.at should return the element at the given index (MyPowerAssertExTest)
test/my_power_assert_ex_test.exs:9
array |> Enum.at(index) == two
| | | |
| 3 2 2
[1, 2, 3, 4, 5, 6]
stacktrace:
test/my_power_assert_ex_test.exs:13
3) test defp one. assert with a match (MyPowerAssertExTest)
test/my_power_assert_ex_test.exs:26
Expected exception FunctionError but got UndefinedFunctionError (undefined function: MyExUnit.onep/0 (module MyExUnit is not available))
stacktrace:
test/my_power_assert_ex_test.exs:27
Finished in 0.07 seconds (0.06s on load, 0.01s on tests)
3 tests, 3 failures
Randomized with seed 387497
# まとめ
今回はma2geさんの新しく作成されたライブラリを紹介させていただきました。
Githubでも、ToDoリストはまだ残っていらっしゃるのでアップデートがとても楽しみなライブラリだと思います。
ExUnitも同時に使用することもできますので、すぐにでも組み込み可能で、使用していて楽しいツールでもありますので、使ってみてはいかがでしょうか?
それでは皆さま、良いElixirライフを
- 13 http://www.facebook.com/Gertruda
- 6 http://t.co/JO9f6fdrl6
- 5 http://t.co/Tu82wEsI0j
- 4 https://www.google.co.jp/
- 3 http://reader.livedoor.com/reader/
- 3 http://t.co/GI6Pm0Vo39
- 1 http://b.hatena.ne.jp/entrylist/it?sort=hot
- 1 http://b.hatena.ne.jp/hotentry/it
- 1 http://b.hatena.ne.jp/hotentry/it/技術系ブログ
- 1 http://b.hatena.ne.jp/naoya/
- 2015-10-04 日々思考す 3/48 6%