基本的にメールビルダーであるモックを使用して、流暢なインターフェイスをモックしたいと思います。
this.builder()
.from(from)
.to(to)
.cc(cc)
.bcc(bcc)
.template(templateId, templateParameter)
.send();
これを Spock でモックする場合、次のような多くの設定が必要です。
def builder = Mock(Builder)
builder.from(_) >> builder
builder.to(_) >> builder
ユースケースによっては、モックとの特定の相互作用をテストしたい場合は、さらに面倒になります。だから私は基本的にここで2つの質問を得ました:
- すべてのテスト ケースで再利用できるメソッドで流暢なインターフェイスの一般的な 1 回限りのセットアップを実行し、テスト ケースごとに追加のルールを指定できるように、モック ルールを組み合わせる方法はありますか?
より少ないコードで流暢なインターフェイスのモックを指定する方法はありますか。たとえば、次のようなものです。
def builder = Mock(Builder) builder./(from|to|cc|bcc|template)/(*) >>ビルダー
または Mockito のディープ スタブに相当するもの ( http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#RETURNS_DEEP_STUBSを参照)