Тест на флаттер - проверка наличия активов - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть приложение для флаттера, которое содержит большой список цитат, каждая со своим связанным аудиофайлом.

Я написал простой тест, который проверяет, все ли указанные аудиофайлы находятся там, где они должны быть, в случае опечаток et c:

test('specified audio file should exist for all quotes', () {
    ALL_QUOTES.forEach((quote) {
      final expectedPath = 'assets/${quote.filename}.wav';
      final exists = new File(expectedPath).existsSync();
      expect(exists, isTrue, reason: '$expectedPath does not exist');
    });
  });

В IntelliJ это проходит нормально, однако при запуске из командной строки с использованием flutter test происходит сбой при первом поиске.

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

1 Ответ

0 голосов
/ 26 февраля 2020

Хорошо, так что я дошел до конца, и это - это , что вы можете сделать в модульном тесте.

Для диагностики я добавил строку print(Directory.current); в тест , Работая в IntelliJ, я получаю /home/project_name. Из командной строки это /home/project_name/test. Таким образом, нужно просто указать путь к файлу.

Отредактировано, чтобы включить более простые логики Ovidiu c для получения правильного пути к активу

void main() {
  test('specified audio file should exist for all quotes', () {
    ALL_QUOTES.forEach((quote) {
      final expectedPath = 'assets/${quote.filename}.wav';
      final exists = _getProjectFile(expectedPath).existsSync();
      expect(exists, isTrue, reason: '$expectedPath does not exist');
    });
  });
}

File _getProjectFile(String path) {
  final String assetFolderPath = Platform.environment['UNIT_TEST_ASSETS'];
  return File('$assetFolderPath/$path');
}
...