なんでも肯定してくれるruboty-yesを公開した
ハマった
- RSpecのTurnipを使うRakeタスクの定義
- Rubotyのreply時のto/fromの扱い
- Rubotyのテストをどうかくとうまくいくのか考える時間
Turnipのシナリオ
最初シナリオで使う人物名を実在の人物名にしてしまった。 架空の名前を考えてシナリオを書くのは難しい。
Rubotyのテスト
今回は受け入れテストだけ書いてみた。
テスト中で実際にRuboty::Robot
を作成し、動かしている。
Ruboty::Adapters::Base
を継承したアダプタを定義すると、最後に定義されたアダプタが使われるようになる。今回はMock
アダプタを定義した。Mock
アダプタは特に何もしない。
Ruboty::Robot
の発言を監視するためRuboty::Robot
を拡張するRuboty::Testable
モジュールをprepend
した。今回は、Rubotyの発言の記録を取れればいいので、say
を奪った、それに合わせて最小限のインターフェイスを定義してやった。
said
を直接のぞいてる部分はsaid?
で置き換えた方がうまくいきそうだなぁと書き終わってから気づいた。
まとめ
今回は簡単なテキスト処理のようなものなので、受け入れテストのみ書いた。 ハンドラーやアクションの中でもう少し複雑なことをしている場合は、個々のハンドラー/アクションのユニットテストも書いた方がよいかもしれない。
しかし基本的にはRubotyはチャットをインターフェイスにして動いているので、チャットをベースにした受け入れテストをしっかり書くのがいいんじゃないかと思っている。
READMEがそのままテストとして実行できる夢をみた。