// テストコードを含む典型的なJavaのコード // インターフェイス interface IDuck { void quack(); } // 実装クラス class Duck implements IDuck { void quack() { /* ... */ } } // テスト用のモック クラス class MockDuck implements IDuck { void quack() { /* ... */ } }本来、実装に必要なのはDuckクラスだけですが、自動テストのためにIDuckインターフェイスを作り、そこからテスト用のモック クラスを用意しています。モックを自動生成するライブラリもいくつかありますが、設定の手間が必要だったり、コードがJavaの言語仕様からみると不自然な感じになったりしてしまいます。(それでも便利ですが)
Dartでも同じように書くことはできますが、Dartではクラスをインターフェイスとして利用できます。つまり、モックを作るためにインターフェイスを用意する必要はなく、クラスから直接モック クラスを作ることができます。サンプルコード
// 実装クラス class Duck { quack() => 'complicated enterprise n-tier quack'; } // テスト用のモック クラス // Duckクラスを実装(implements)する。 class MockDuck implements Duck { quack() => 'quack for testing'; } main() { Duck duck = new MockDuck(); print(duck is Duck); // true print(duck.quack()); // quack for testing }MockDuckクラスはDuckクラスを実装(implements)しています。もちろん、MockDuckではquackメソッドを実装する必要があります。
なお、この機能は、Dartboard(try.dartlang.org)では問題なく利用できますが、現在公開されている最新のDart Editor(ビルド6479、2012/4/12公開)では不具合があるため利用できません。すでに修正されていますので次のリリースから利用できると思います。
0 件のコメント:
コメントを投稿