Created
March 10, 2020 02:06
-
-
Save isacjunior/83c48f44ce539f243200920080fb0874 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
import 'package:flutter_test/flutter_test.dart'; | |
import 'package:widget_test/heart.dart'; | |
// Função auxiliar para envolver os widgets a serem testados. | |
Widget makeTestable(Widget widget) => MaterialApp(home: widget); | |
void main() { | |
testWidgets('Heart smoke test', (WidgetTester tester) async { | |
// pumpWidget() renderiza a UI dado um widget. | |
await tester.pumpWidget(makeTestable(HeartPulse())); | |
// Finder utilizado para garantir que um elemento do tipo Icon foi renderizado. | |
final Finder iconFinder = find.byType(Icon); | |
// Aqui utilizamos nosso Finder junto ao nosso Matcher para garantirmos que temos apenas um Icon sendo renderizado. | |
expect(iconFinder, findsOneWidget); | |
// Como necessito do Widget, reaproveito nosso Finder junto ao WidgetTester para ter acesso ao Widget e suas propriedades. | |
final Icon icon = tester.widget(iconFinder); | |
// Verificando a verificação da cor do meu Widget. | |
expect(icon.color, Colors.pink[200]); | |
// Verificando o size do Icon. | |
expect(icon.size, 32.0); | |
// Verificando o ícone que foi renderizado. | |
expect(icon.icon, Icons.favorite_border); | |
// Para realizarmos o click, primeiro precisamos encontrar o Widget responsável por isto. | |
final gestureFinder = find.byType(GestureDetector); | |
// Tendo o Widget de Gesture encontrado, podemos simular o click também utilizando o WidgetTester. | |
await tester.tap(gestureFinder); | |
// pumpAndSettle() é semelhante ao uso do pump(), porém aqui temos a necessidade que todos os quadros necessários sejam renderizados devido a nossa animação. | |
await tester.pumpAndSettle(); | |
// Finalizado toda a nossa animação, precisamos encontrar novamente o nosso ícone. | |
final Icon iconAfter = tester.widget(iconFinder); | |
// Agora verificarmos se o seu valor de size foi alterado após a animação. | |
expect(iconAfter.size, 58.0); | |
// Também verificamos a cor e o icon para garantirmos o que era esperado. | |
expect(iconAfter.color, Colors.pink); | |
expect(iconAfter.icon, Icons.favorite); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment