Флаттер: как издеваться над ручьем - PullRequest
0 голосов
/ 26 ноября 2018

Я использую шаблон блока, и теперь я пришел, чтобы проверить пользовательский интерфейс.Мой вопрос: как издеваться над потоками?Вот код, который у меня есть: я даю классу RootPage необязательное значение mockBloc, и я установлю его на фактический _bloc, если этот mockBloc не равен нулю

class RootPage extends StatefulWidget {

  final loggedOut;
  final mockBlock;
  RootPage(this.loggedOut, {this.mockBlock});

  @override
  _RootPageState createState() => _RootPageState();
}


class _RootPageState extends State<RootPage> {

  LoginBloc _bloc;

     @override
      void initState() {
        super.initState();
        if (widget.mockBlock != null)
          _bloc = widget.mockBlock;
        else
          _bloc = new LoginBloc();
        if (widget.loggedOut == false)
        _bloc.startLoad.add(null);
      }

    ...

 @override
  Widget build(BuildContext context) {
    return StreamBuilder(
        stream: _bloc.load,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return Column(
                children: <Widget>
                     ...

Это то, что я пробовал:

  testWidgets('MyWidget', (WidgetTester tester) async {
    MockBloc mockBloc = new MockBloc();
    MockTokenApi mockTokenApi = new MockTokenApi();

    await tester.pumpWidget(new MaterialApp(
        home: RootPage(false, mockBlock: mockBloc)));

    when(mockBloc.startLoad.add(null)).thenReturn(mockBloc.insertLoadStatus.add(SettingsStatus.set));   //this will give in output the stream that the StreamBuilder is listening to (_bloc.load)
    });
   await tester.pump();
    expect(find.text("Root"), findsOneWidget);

  });

Результат, которого я достигаю, всегда получить:

Метод 'add' был вызван для нуля

, когда _bloc.startLoad.add(null)называется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...