如果我们有一个小部件TextSpan的子代,RichText您将如何测试文本内容.
new TextSpan(
text: 'Hello world!',
style: new TextStyle(color: Colors.black),
)
Run Code Online (Sandbox Code Playgroud)
在您的测试中,使用Text小部件,您可以使用expect(find.text('Hello world!'), findsOneWidget),但如果您有一个小部件,则不起作用TextSpan.
expect(find.byType(TextSpan), findsOneWidget)也找不到任何类型的小部件TextSpan.
That's not possible. As TextSpan doesn't actually render anything.
It is data information used by another object to actually render something.
您可以做的是找到您将TextSpan. 然后验证它是否正确
小智 7
可以通过使用来实现byWidgetPredicate
expect(
find.byWidgetPredicate((widget) =>
widget is RichText &&
widget.text.toPlainText() ==
'Hello World!.'),
findsOneWidget);
Run Code Online (Sandbox Code Playgroud)
除了 Rémi 的回答,这里是从RichText. 您将密钥设置为RichText,然后您可以执行以下操作:
Finder widgetFinder = find.byKey(key);
Finder rtFinder =
find.descendant(of: widgetFinder, matching: find.byType(RichText));
RichText richText = rtFinder.evaluate().first.widget as RichText;
String richTextText = richText.text.toPlainText();
print('Text from Text widget: $richTextText');
expect(richTextText, 'This is my text',
reason: 'Text from found text widget do not match');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |