Flutter 初始專案單元測試解讀

weixin_34214500發表於2019-03-02

解讀全在程式碼的註釋裡,請慢用 ?

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:flutter_app4/main.dart';

void main() {
  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
    // 載入 MyApp 類
    await tester.pumpWidget(MyApp());

    // findsOneWidget 表示找到一個文字為「0」的 Widget
    expect(find.text('0'), findsOneWidget);

    // findsOneWidget 表示沒有文字為「1」找到 Widget
    expect(find.text('1'), findsNothing);

    // 模擬按了一下「+」號圖片
    await tester.tap(find.byIcon(Icons.add));

    IconData icon = Icons.add; // 圖片返回的是 IconData 型別
    Finder addIcon = find.byIcon(icon); // find.xxx 返回的是 Finder 型別
    await tester.tap(addIcon); // 再模擬按了一下「+」號圖片

    // tester 「抽身逃走」
    await tester.pump();

    // tester 已經「跑路」了,所以 tap 不會執行,但也不會報錯
    await tester.tap(find.byIcon(Icons.add));

    // findsOneWidget 表示沒有文字為「0」找到 Widget
    expect(find.text('0'), findsNothing);
    // findsOneWidget 表示找到一個文字為「2」的 Widget
    expect(find.text('2'), findsOneWidget);
  });
}

相關文章