【Dart】コールバック関数が呼ばれるかテストする方法

Flutter(Dart)の自作クラスやウィジェットにコールバック関数がセット可能な時、それが呼ばれるかどうかをテストするにはどうすれば良いでしょうか。

関数が呼ばれるというとモックを使ったテストをすべきかと思いましたが、今回であれば以下のようにすれば簡単にテストできます。(ある意味で簡易的なモックを自分で実装しています)

Dart
  test("callback", () {
    final myClass = MyClass();

    bool called = false;
    myClass.callback = () {
      called = true;
    };

    // ここでcallbackが呼ばれるような処理

    expect(called, isTrue);
  });

コールバック関数の中身を工夫すればいろいろなことがテストできると思いますが、DartではMockitoというモックを扱うパッケージが用意されているようです。Mockitoでは処理が呼ばれた回数や順番を細かく確認できるため、細かいテストを行う場合はMockitoを使うべきでしょう。

mockito | Dart package
A mock framework inspired by Mockito with APIs for Fakes, Mocks, behavior verification, and stubbing.

ただ、簡易的なテストであればパッケージをインストールせず、このような方法でテストを行うのもありだと思います。

コメント

タイトルとURLをコピーしました