Flutter Mobile Development · Урок

Модульное тестирование и имитация

Пишите быстрые изолированные модульные тесты для бизнес-логики Flutter и используйте имитации для проверки кода, зависящего от сервисов и API.

Урок 4 из 413 шагов

«Модульное тестирование и имитация» — бесплатный урок Flutter Mobile Development на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Flutter Mobile Development, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Flutter Mobile Development содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

The Testing Pyramid

You have seen widget and integration tests. At the base sits the fastest layer: unit tests that verify a single function or class in isolation.

  • Many unit tests (fast)
  • Fewer widget tests
  • Even fewer integration tests (slow)

Anatomy of a Unit Test

A unit test uses test() and expect() from the test package.

import 'package:test/test.dart';

void main() {
  test('adds two numbers', () {
    expect(2 + 3, equals(5));
  });
}

Testing a Class

Instantiate the class under test and assert on its behaviour.

test('counter increments', () {
  final counter = Counter();
  counter.increment();
  expect(counter.value, 1);
});

Matchers

Matchers express expectations clearly.

  • equals(x)
  • isTrue / isNull
  • throwsException
  • contains(x)
expect(list, contains('apple'));
expect(() => parse('bad'), throwsFormatException);

Grouping Tests

Use group() to organize related tests and share setup.

group('Cart', () {
  test('starts empty', () { ... });
  test('adds items', () { ... });
});

setUp & tearDown

setUp runs before each test; tearDown runs after — perfect for fresh fixtures.

late Cart cart;
setUp(() => cart = Cart());
tearDown(() => cart.clear());

The Problem of Dependencies

What if your class calls a real API or database? Tests would be slow and flaky. The solution is mocking — replacing dependencies with fakes you control.

Mockito Setup

Add mockito and build_runner, then annotate to generate mocks.

@GenerateMocks([ApiService])
void main() {}
// flutter pub run build_runner build

Stubbing Methods

Use when(...).thenReturn(...) to define what a mock returns.

final mockApi = MockApiService();
when(mockApi.fetchUser()).thenAnswer((_) async => User('Ada'));

Verifying Interactions

verify confirms a method was called the expected number of times.

await repository.loadUser();
verify(mockApi.fetchUser()).called(1);

Testing Async Code

Mark the test body async and await futures, or use the completes matcher.

test('loads data', () async {
  final result = await repo.load();
  expect(result, isNotEmpty);
});

Quick Check

Why would you use a mock in a unit test?

Recap

You learned unit testing and mocking:

  • test/expect/matchers and group/setUp
  • Mockito to generate mocks
  • when().thenReturn and verify().called
  • Testing async code

Unit tests give you fast confidence in your business logic.

Можно начать бесплатно

Изучай Dart с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
22
Уроки
88

Часто задаваемые вопросы

Урок «Модульное тестирование и имитация» бесплатный?

Да — полный текст урока «Модульное тестирование и имитация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Flutter Mobile Development, подпишись на CoddyKit PRO. Курс Flutter Mobile Development содержит 4 уроков всего.

Чему я научусь в уроке «Модульное тестирование и имитация»?

Пишите быстрые изолированные модульные тесты для бизнес-логики Flutter и используйте имитации для проверки кода, зависящего от сервисов и API. Ты практикуешь Flutter Mobile Development с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Flutter Mobile Development?

Предыдущий опыт не требуется. Flutter Mobile Development на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Модульное тестирование и имитация»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Flutter Mobile Development?

Да. Каждый урок Flutter Mobile Development включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Принципы тестирования виджетов
  2. Интеграционное тестирование
  3. Инструменты и методы отладки
  4. Модульное тестирование и имитация
← Назад к Flutter Mobile Development