我是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);
}
需要进行哪些更改,以便我可以以通常的“ act-act-assert”风格编写测试(即将game.newGame()
移到对expect(...)
的调用上方)?