A.K*_*.K. 7 unit-testing widget dart flutter
我尝试对一个自己的小部件进行单元测试:
\n\ntestWidgets(\'MyWidget has a title and message\', (WidgetTester tester) async {\n var text = "abc";\n var label = "def";\n\n await tester.pumpWidget(LabeledTextWidget(\n text,\n label: label,\n ));\n\n final textFinder = find.text(text);\n final labelFinder = find.text(label);\n\n expect(textFinder , findsOneWidget);\n expect(labelFinder, findsOneWidget);\n});\nRun Code Online (Sandbox Code Playgroud)\n\n这是小部件代码:
\n\nclass LabeledTextWidget extends StatelessWidget {\n final String text;\n final String label;\n LabeledTextWidget(this.text, {this.label});\n\n @override\n Widget build(BuildContext context) {\n return Column(\n crossAxisAlignment: CrossAxisAlignment.stretch,\n children: <Widget>[\n Text(label,style: Theme.of(context).textTheme.caption,),\n Text(text),\n ],\n );\n }\nRun Code Online (Sandbox Code Playgroud)\n\n测试总是抛出异常:
\n\n...\nNo Directionality widget found.\nRichText widgets require a Directionality widget ancestor.\nThe specific widget that could not find a Directionality ancestor was:\nRichText\n...\nRun Code Online (Sandbox Code Playgroud)\n\n我可以通过向所有文本小部件添加文本方向来避免此错误。(textDirection:TextDirection.ltr,),但这是一个糟糕的解决方案,它不适用于行。
\n好的,这是解决方案。
你必须用这个包装小部件:
Directionality(
child: MediaQuery(
data: MediaQueryData(),
child: LabeledTextWidget(this.text, {this.label}),
),
textDirection: TextDirection.ltr,
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |