Модульное тестирование во Flutter с прохождением BuildContext - PullRequest
1 голос
/ 23 мая 2019

У меня есть метод в классе Dart, который принимает параметр BuildContext следующим образом:

class MyClass {

  <return_type> myMethodName(BuildContext context, ...) {
        ...
        doSomething
        return something;
    }
}

Я хочу проверить, что метод работает должным образом:

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
...

void main() {
  MyClass sut;

  setUp(() {
    sut = MyClass();
  });

  test('me testing', () {

    var actual = sut.myMethodName(...);        

    expect(actual, something);
  });
}

Конечно, это не сработает, потому что для метода myMethodName нужен тип параметра BuildContext. Это значение доступно во всем приложении, но я не знаю, где его получить в моих модульных тестах.

1 Ответ

2 голосов
/ 23 мая 2019

Один из способов - использовать testWidgets в сочетании с виджетом Builder :

testWidgets('me testing', (WidgetTester tester) async {
  await tester.pumpWidget(
    Builder(
      builder: (BuildContext context) {
        var actual = sut.myMethodName(context, ...);
        expect(actual, something);

        // The builder function must return a widget.
        return Placeholder();
      },
    ),
  );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...