init_state_test.dart 1.04 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
Ian Hickson's avatar
Ian Hickson committed
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5 6
// @dart = 2.8

Adam Barth's avatar
Adam Barth committed
7
import 'package:flutter_test/flutter_test.dart';
Ian Hickson's avatar
Ian Hickson committed
8 9 10 11
import 'package:flutter/widgets.dart';

List<String> ancestors = <String>[];

12
class TestWidget extends StatefulWidget {
13
  const TestWidget({ Key key }) : super(key: key);
14
  @override
15
  TestWidgetState createState() => TestWidgetState();
Ian Hickson's avatar
Ian Hickson committed
16 17
}

18
class TestWidgetState extends State<TestWidget> {
19
  @override
Ian Hickson's avatar
Ian Hickson committed
20 21 22 23 24 25 26 27
  void initState() {
    super.initState();
    context.visitAncestorElements((Element element) {
      ancestors.add(element.widget.runtimeType.toString());
      return true;
    });
  }

28
  @override
29
  Widget build(BuildContext context) => Container();
Ian Hickson's avatar
Ian Hickson committed
30 31 32
}

void main() {
33
  testWidgets('initState() is called when we are in the tree', (WidgetTester tester) async {
34
    await tester.pumpWidget(Container(child: const TestWidget()));
35
    expect(ancestors, equals(<String>['Container', 'RenderObjectToWidgetAdapter<RenderBox>']));
Ian Hickson's avatar
Ian Hickson committed
36 37
  });
}