Je ne sais pas comment je vérifierais si un widget est actuellement affiché ou non en utilisant FlutterDriver
.
En utilisant WidgetTester
c'est très facile à réaliser en utilisant par exemple findsOneWidget
.
Cependant, lors des tests d'intégration utilisant FlutterDriver
, il n'y a pas d'accès à un objet WidgetTester
.
Le FlutterDriver.waitFor
La méthode n'indique pas si le widget a été trouvé dans la durée donnée.
Comment vérifier si un widget est à l'écran à l'aide de FlutterDriver
?
Flutter Driver n'a pas de méthode explicite pour vérifier si un widget est présent/existe, mais nous pouvons créer une méthode personnalisée qui servira à cet effet en utilisant la méthode waitFor
. Par exemple, j'ai un simple widget text
à l'écran et j'écrirai un test de pilote de flottement pour vérifier si ce widget est présent ou non en utilisant une méthode personnalisée isPresent
.
Code principal:
body: Center(
child:
Text('This is Test', key: Key('textKey'))
Test du pilote Flutter pour vérifier si ce widget est présent ou non est comme ci-dessous:
test('check if text widget is present', () async {
final isExists = await isPresent(find.byValueKey('textKey'), driver);
if (isExists) {
print('widget is present');
} else {
print('widget is not present');
}
});
isPresent
est une méthode personnalisée dont la définition est la suivante:
isPresent(SerializableFinder byValueKey, FlutterDriver driver, {Duration timeout = const Duration(seconds: 1)}) async {
try {
await driver.waitFor(byValueKey,timeout: timeout);
return true;
} catch(exception) {
return false;
}
}
L'exécution du test détecte que le widget est présent:
Si je commente le code du widget text
puis que j'exécute le test, il détecte que le widget n'est pas présent:
J'espère que cela t'aides.