#flutter #dart #flutter-test
Вопрос:
Я пытаюсь протестировать свой виджет, содержащий уцененное тело, с помощью:
testWidgets('Answer displayed correctly',
(WidgetTester tester) async {
await tester.pumpWidget(MyWidget("text")));
...
Я получаю сообщение об ошибке:
The following assertion was thrown building MarkdownBody(state: _MarkdownWidgetState#9550f):
No Directionality widget found.
RichText widgets require a Directionality widget ancestor.
The specific widget that could not find a Directionality ancestor was:
RichText
The ownership chain for the affected widget is: "RichText ← Wrap ← Column ← MarkdownBody ← Center ←
Padding ← Expanded ← Row ← Column ← DecoratedBox ← ⋯"
Typically, the Directionality widget is introduced by the MaterialApp or WidgetsApp widget at the
top of your application widget tree. It determines the ambient reading direction and is used, for
example, to determine how to lay out text, how to interpret "start" and "end" values, and to resolve
EdgeInsetsDirectional, AlignmentDirectional, and other *Directional objects.
The relevant error-causing widget was:
MarkdownBody
Очевидно, что эта ошибка появляется здесь, потому что я тестирую свой виджет напрямую, а не использую его в MaterialApp или WidgetsApp. Мне кажется, что это много дополнительного кода, когда мне всегда приходится вставлять виджеты направленности в свой тестовый код. Есть ли способ избежать ввода большого количества дополнительного тестового кода для решения проблемы направленности?
Комментарии:
1. что вы подразумеваете под «большим количеством дополнительного тестового кода»? все, что вам нужно, это добавить
Directionality
виджет в качестве родителя2. @pskink : Мне кажется, что это нужно делать всякий раз, когда тестируется что-то, что связано с уценкой тела вниз по дереву.