Есть ли побочный эффект от использования глобальной переменной верхнего уровня при параллельном выполнении тестов? - PullRequest
0 голосов
/ 17 февраля 2020

Я здесь для разъяснения о модульных тестах во Flutter.

Вот типичный тестовый фрагмент, который я использую для тестирования моего компонента flutter_blo c blo c.

void main() {
  TestWidgetsFlutterBinding.ensureInitialized();
  ///we have only one data repository which is referred in all blocTests defined
  ///in this file
  DataRepository dataRepository;
  setUp(() {
    dataRepository = mockData.MockDataRepository();
  });

  blocTest('User can login with a valid username and valid password',
      build: () {
       ///code referring dataRepository
        when(dataRepository.login("username","password"))
            .thenAnswer((_) async =>
            mockData.setupSuccessObject(mockData.setupUser()));

        return LoginPageBloc(
          dataRepository: dataRepository,);
      },
      act: (bloc){
    ///...
      },
      expect: [
        ///...
      ],
      verify: () async {
        ///code referring dataRepository
        verify(dataRepository.login("username", "password"))
            .called(1);
      });

  blocTest('User cannot login with invalid username or password',
      build: () {
        ///code referring dataRepository
        when(dataRepository.login("username","password"))
            .thenAnswer((_) async =>
            mockData.setupAuthFailedObject());

        return LoginPageBloc(
            dataRepository: dataRepository,);
      },
      act: (bloc){
        ///...
      },
      expect: [
        ///...
      ],
      verify: () async {
        ///code referring dataRepository
        verify(dataRepository.login("username", "password"))
            .called(1);
      });

}

В приведенном выше фрагменте вы можете видеть, что объект DataRepostory, объявленный как переменная верхнего уровня, делает возможным следующее.

  1. делает объект DataRepository доступным для каждого blocTest functions
  2. делает объект DataRepository доступным для каждого метода 'build' и 'verify' в методе blocTest ().

Мой вопрос:

есть ли побочный эффект от использования глобальной переменной верхнего уровня, подобной этой, когда мы выполняем тесты параллельно?

...