rspecpiccolo gem
DESCRIPTION
About Ruby gem library "RSpecPiccolo gem"TRANSCRIPT
RSpecPiccolo GemRSpecPiccolo Gem についてについて
Presented by @tbpgr
目次目次● エレベーターピッチ● ケース 1 インスタンスメソッドのテスト● ケース 2 クラスメソッドのテスト● ケース 3 プロダクトコードのひな形も同時に作成● 導入方法● 得したこと
エレベーターピッチエレベーターピッチ
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです● これはパラメータ化テストのテンプレートを出力でき
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです● これはパラメータ化テストのテンプレートを出力でき● 手動作成と違って
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです● これはパラメータ化テストのテンプレートを出力でき● 手動作成と違って● ボイラーテンプレートの出力機能が備わっている
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
● コンソールで piccolo コマンドを実行
● 第 1 引数はモジュール名+クラス名
● 第 2 引数はファイル名
● 第 3 引数以降はメソッド名(必要な数分)
piccolo e Hoge::Core hoge_core hoge hige hage
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
● 出力結果は・・・
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト● require,テストケースのリスト部● describe はモジュール名+クラス名。 contextはメソッド名が自動で設定されている● テストケースは 1ケース 1ハッシュで管理。必要なパラメータは手動で追加
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト● テスト本体はテストケースのリスト分ループする構造になっている● 1つのメソッドは1つのテストケースで管理する● case_before, base_afterはcaseごとの初期化・終了処理● context全体の初期化、終了はRSpecのbefore,afterを利用すればよい● テストに必要となるインスタンスの取得、メソッドの実行、検証コードのひな形が予め出力されている
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト● case_before にケースごとの初期化処理を記述● case_after にケースごとの終了処理を記述
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
● 同様の構造でメソッド数分テストコードが生成されている
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト
● コンソールで piccolo コマンドを実行。
● 第 1 引数はモジュール名+クラス名
● 第 2 引数はファイル名
● 第 3 引数以降はメソッド名+ @c (必要な数分)
● インスタンスメソッドとの併用も可能
piccolo e Hoge::Core hoge_core hoge@c
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト
● 出力結果は・・・
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト● インスタンスメソッドと同じ出力内容の箇所は説明省略
● インスタンスの取得の代わりにクラスメソッドを直接呼び出すコードが生成されている。
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成
● コンソールで piccolo コマンドを実行。
● 第 1 引数はモジュール名+クラス名
● 第 2 引数はファイル名
● 第 3 引数以降はメソッド名または属性
※ クラスメソッドは @c, 属性は @f で指定可能
● 属性はコンストラクタからの値設定コードつき
piccolo e Hoge::Core hoge_core class_method@c instance_method attr1@f attr2@f -p
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成
● 出力結果は・・・
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成● テストコードについては説明省略
● プロダクトコードのひな形が lib 配下に出力される
● attr_accessor_init は TbpgrUtils gem で提供しているフィールド定義+ initialize 定義を一括で行うクラスマクロ。 AttributesInitializable を include することで利用可能。
導入導入● Bundler 利用時
Gemfile に『 gem 'rspec_piccolo' 』を記述して bundle を実行● gem install 利用時
gem install rspec_piccolo を実行● その他、より詳細な利用方法については GitHub 参照
https://github.com/tbpgr/rspec_piccolo
Gem については下記参照
http://rubygems.org/gems/rspec_piccolo
補足補足● もし生成されるコードの設計や記法等が好みではない場合は、アイデアだけ流用して自分好み
の RSpecPiccolo 代替 gemを作成・公開してはいかがでしょうか?● Piccolo はピッ○ロ大○王のイメージです。
「ポコペンポコペンダーレガツツイタ・・・う、うごっ。」と魔族の卵のごとくテストコードを生成しているイメージ。
● 俺は MiniTest派だ、という方はぜひ MiniTestMajunior gem を。● Ruby使い以外の方も同様の観点でツールを作成してみるのはいかがでしょうか?私はJavaの
プロジェクトで RSpecPiccolo のJUnit版とも言えるツールを作成して実プロジェクトで活用したことがあります。
当時はJavaの CLIツールとして作成しましたが、もし今作るなら Groovyで Gradleのタスクとして作るだろうと思います。必要にかられていないので作りませんけど。
Thank you!!Thank you!!
● Author: @tbpgr● Twitter: @tbpgr● Blog: http://d.hatena.ne.jp/tbpg/● GitHub: https://github.com/tbpgr● RubyGems: http://rubygems.org/profiles/tbpgr