// テストコードを含む典型的な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 件のコメント:
コメントを投稿