its v0.4.0 をリリースしました
皆さん、お久しぶりです。youta-t です。
最後の投稿で告知していた its v0.4.0 をリリースしたました。この記事はそのお知らせです。
its とは?
its とは、go 用のテストライブラリです。
- マッチャのコレクション、マッチャ開発用キット
-
struct
用のマッチャビルダ・ジェネレータits/structer
-
interface
用のモックジェネレータits/mocker
- "シナリオテスト" 用のツールキット
を提供しています。これひとつで go のテストは一通りできるものと考えています。
v0.4.0でかわったこと
コード生成系の機能すなわち、 struct のマッチャビルダを生成する its/structer
と、interface のモックを生成する its/mocker
の機能を拡充しました。
また、its/mocker
が生成するモックの仕様が変わりました。こちらは、バージョンアップに伴って既存のテストコードに調整が必要です。
コード生成系機能の拡充
import
に対応しました。
広範な これまでは dot import とか、同一パッケージ内・別ファイルの型とか、標準ライブラリ内の型とかがうまくコード生成に反映できていませんでしたが、 v0.4.0 からは特段の制限なく使えるようになったはずです。
(もしうまくいっていないケースがあれば教えて下さい!)
its/mocker
: interface の埋め込みに対応しました
これまで、他の interface が埋め込まれている interface はモックできませんでしたが、この制限を取り除きました。
「他の interface が埋め込まれている interface」 というと、こんなのです:
type MyReadCloser interface {
io.Reader
io.Closer
}
interface の本体に、メソッドではなくて他の interface の名前が直接かいてあるやつのことですね。
これは、go と同様に、mocker も埋め込まれている interface のメソッドが全部列挙されているかのように扱うようになりました。
its/mocker
が生成するモックビルダの仕様変更
モックの取り回しを良くすることを目的に、 its/mocker
が生成するモックビルダの仕様を変更しました。
モック関数やモックメソッドを得る方法、またインタフェースのモックを得る方法が v0.3 系から変わっています。
この仕様変更指針については https://zenn.dev/youta_t/articles/d5357edf69115c で論じました。
its をよろしく
これで一通り、当初考えていた機能を its に搭載できました。他の機能については、 zenn を its トピックで検索 してもらうと、過去の記事が見つかります。
まだドキュメンテーションがこなれていない気がしているので、今後はこっちを拡充しながら、もっと使い込んでみて、粗を探していきたいと考えています。
もしよかったら皆さんも使ってみて、感想を聞かせて欲しいと思っています。
its を、どうぞよろしくお願いします。
Discussion