にむかひて

doctestでパターンマッチを使うには?

モデル作成などで全要素をみるのが辛いので、出力結果をパターンマッチでみたい

  • // いつもの phx.gen.auth をみてみ… doctestじゃなかった

結論

  • 直接は使えない
  • パターンマッチした結果でもって評価するといい。なるほど

やりたいくてもできない例

iex> Accounts.create_user(%{name: "hoge"})
%Accounts.User{name: "hoge"}

代替例(イメージ)

iex> {status, %Accounts.User{} = user} = Accounts.create_user(%{name: "hoge"})
iex> user.name
"hoge"

参考にさせていただいた資料

その他

  • doctest(module, import: true) でモジュール名なしで参照可能
  • only: [hoge: 1]except: [hoge: 1] なども可能
  • テスト側でfixtureなモジュールをimportしておけば、iex>で使用可能
  • // 作成系は副作用がある(レコードが1増える等)のでdoctestで頑張るものではないかもしれない
  • // 大量のデータ用意が必要なケースもdoctestが不必要に肥大化するので良し悪しありそう
  • // 使用時に知っておいた方が良いケースは欲しいが、レアケースはコード上にはないほうが嬉しいか…?

サイト内検索