Flutter(Dart)の自作クラスやウィジェットにコールバック関数がセットできる時、セットした関数が本当に呼ばれるかどうかを外部パッケージに依存せず簡易的にテストする方法を解説します。
解説
関数が呼ばれるというとモックを使ったテストが一般的だと思いますが、簡易的なテストであれば以下のようにすれば実現できます。
Dart
// コールバック関数の呼び出しを確認するテストケース
test("callback", () {
final myClass = MyClass();
bool called = false;
// コールバック関数にダミーの処理をセット
myClass.callback = () {
called = true;
};
// ここでcallbackが呼ばれるような処理
expect(called, isTrue);
});
内部に呼ばれたかどうかのフラグを持つ、ある意味で簡易的なモックを自分で実装していることになります。
セットする処理を工夫すればいろいろなことがテストできると思いますが、複雑なことをやろうとすると車輪の再発明になりかねないので、簡易的なテストを外部パッケージを導入せずに行いたいという場合に有効な手段だと思います。
Mockito
DartではMockitoというモックを扱うパッケージが公式から提供されています。Mockitoでは処理が呼ばれた回数や順番を細かく確認できるため、細かいテストを行う場合はMockitoを使うべきでしょう。

mockito | Dart package
A mock framework inspired by Mockito with APIs for Fakes, Mocks, behavior verification, and stubbing.
ただ、簡易的なテストであればパッケージをインストールせず、このような方法でテストを行うのもありかと思いました。
個人的にはFlutterの標準機能として取り込まれることでより使いやすい環境になるのではないかと思うので、今後に期待したいところです。
コメント