Challenge: Unit test Quiz app

Challenge: Unit test Quiz app #

Introduction #

This challenge is based on a modified version of the Quiz app from here.

In this version I’ve extract the logic from UI, such that unit tests can be written for the logic.

The logic have been extracted from QuizScreen and moved to QuizModel class which extends ChangeNotifier. A ChangeNotifier is an implementation of the classic observer pattern.

Here is a short YouTube video I’ve found that shows how ChangeNotifier can be used.

Provider 📱 Simple State Management • Flutter Tutorial

Getting started #

Clone the separate-logic branch of quiz app repository.

git clone -b separate-logic https://github.com/fluttered-book/quiz.git

Run application

dart run

Run tests

dart test

What to do #

Write unit-tests for QuizModel found in lib/quiz_model.dart. Your tests should be written in test/quiz_model_test.dart.

QuizModel has side effects. In fact its methods are void.

  • How can you write tests, so that a change in the logic will make a test fail?
  • What would be a good description for each of the test you come up with?