【发布时间】:2020-01-28 10:13:47
【问题描述】:
我尝试对自己的小部件进行单元测试:
testWidgets('MyWidget has a title and message', (WidgetTester tester) async {
var text = "abc";
var label = "def";
await tester.pumpWidget(LabeledTextWidget(
text,
label: label,
));
final textFinder = find.text(text);
final labelFinder = find.text(label);
expect(textFinder , findsOneWidget);
expect(labelFinder, findsOneWidget);
});
这是小部件代码:
class LabeledTextWidget extends StatelessWidget {
final String text;
final String label;
LabeledTextWidget(this.text, {this.label});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Text(label,style: Theme.of(context).textTheme.caption,),
Text(text),
],
);
}
测试总是抛出异常:
...
No Directionality widget found.
RichText widgets require a Directionality widget ancestor.
The specific widget that could not find a Directionality ancestor was:
RichText
...
我可以通过向所有文本小部件添加文本方向来避免此错误。 (textDirection: TextDirection.ltr,),但这是一个糟糕的解决方案,它不适用于行。
【问题讨论】:
标签: unit-testing flutter dart widget