web-dev-qa-db-ja.com

ユニットテストでFlutter / Dartが数秒間待機する

タイマーアプリを書いています。単体テストで、タイマーが適切に動作しているかどうかをテストするために数秒間待つにはどうすればよいですか?

// I want something like this.
test("Testing timer", () {
    int startTime = timer.seconds;
    timer.start();

    // do something to wait for 2 seconds

    expect(timer.seconds, startTime - 2);

});
8
Ragas

awaitFuture.delayed(...) `を使用できます:

test("Testing timer", () async {
    int startTime = timer.seconds;
    timer.start();

    // do something to wait for 2 seconds
    await Future.delayed(const Duration(seconds: 2), (){});

    expect(timer.seconds, startTime - 2);

});

別の方法は、テストで使用される時間を自由に操作できるようにするために、 https://pub.dartlang.org/packages/clock を指定したfake_asyncです。

12