Тест асинхронного потока Дарт-Ланга - PullRequest
0 голосов
/ 08 июня 2019

Я новичок в Dart и занимаюсь рефакторингом примера игры Hangman, которую я нашел в Интернете, чтобы помочь в изучении языка и тестовой библиотеки. Я изо всех сил пытаюсь написать тест, используя потоковое сопоставление emits в порядке упорядочения-действия-утверждения.

Вот мой текущий тест, который находится в упорядочении-утверждении-действии:

void main() {
  test('new game has no guessed letters', () {
    var word = List.of(['WORD']);
    var notifier = Notifier();
    var game = HangmanGame(word, notifier);

    expect(notifier.onChange, emits('____'));

    game.newGame();
  });
}

Важные части класса Notifier для этого примера:

class Notifier implements EventPublisher, EventSubscriber {
  StreamController<String> _onChange = StreamController<String>.broadcast();

  Stream<String> get onChange => _onChange.stream;

  onChangeEvent(String event) => _onChange.add(event);
}

И метод newGame(), который связывает все это вместе:

  void newGame() {
    _wordList.shuffle();
    _wordToGuess = _wordList.first.split('');
    _wrongGuesses = 0;
    _lettersGuessed.clear();
    _notifier.onChangeEvent(wordForDisplay);
  }

Что нужно изменить, чтобы я мог написать тест в обычном стиле упорядочить-действовать-утверждать (то есть переместить game.newGame() над вызовом expect(...))?

...