4️⃣

its v0.4.0 をリリースしました

2024/04/29に公開

皆さん、お久しぶりです。youta-t です。

最後の投稿で告知していた its v0.4.0 をリリースしたました。この記事はそのお知らせです。

https://github.com/youta-t/its

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