0Pricing
Dart Academy · Урок

Моки, имитации и покрытие

Изолируйте компоненты и измеряйте объём тестирования

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

Изолируйте единицу

Модульный тест должен проверять одну часть системы отдельно. Настоящие базы данных и сети делают тесты медленными и нестабильными, поэтому мы заменяем их. 🔌

Тестовые двойники

Тестовый двойник заменяет настоящую зависимость. Обычно используются моки, фейки и заглушки.

Что такое фейк

Фейк имеет рабочую, но упрощённую реализацию, например список в памяти вместо настоящей базы данных.

class FakeRepo implements Repo {
  final _items = <Item>[];
}

Что такое мок

Мок записывает, как его вызывали, чтобы Вы могли проверять взаимодействия, а не только итоговые значения.

Пакет для создания моков

Специальный пакет автоматически создаёт моки. Аннотируйте нужный тип и запустите средство сборки, чтобы создать его.

@GenerateMocks([Repo])
import 'repo_test.mocks.dart';

Настройка поведения

Настройте мок: укажите, что при вызове этого метода нужно вернуть это значение. Так поведение становится предсказуемым.

when(repo.find(1))
  .thenReturn(Item('a'));

Проверка вызовов

Используйте проверку, чтобы убедиться, что метод был вызван и узнать, сколько раз это произошло. Так Вы докажете, что код правильно взаимодействовал со своей зависимостью.

verify(repo.save(any)).called(1);

Настройка асинхронного поведения

Для методов, возвращающих асинхронный результат, задайте поведение с помощью thenAnswer, чтобы мок мог вернуть асинхронный результат.

when(api.load())
  .thenAnswer((_) async => 'ok');

Мок или фейк

Выбирайте фейк, когда Вам нужно реалистичное поведение, а мок — когда важно, какие именно вызовы произошли.

Что означает покрытие

Покрытие измеряет, какие строки фактически выполняются в Ваших тестах. Высокое покрытие указывает на тщательность, но никогда не гарантирует правильность.

Создание отчёта о покрытии

Запустите тесты со сбором данных о покрытии, а затем преобразуйте эти данные в отчёт, который можно прочитать или загрузить в инструмент.

dart test --coverage=coverage

Быстрая проверка

Какой тестовый двойник записывает вызовы, чтобы Вы могли их проверить?

Повторение

Вы изолировали единицы с помощью фейков и моков, настроили заглушки, проверили вызовы и измерили покрытие. Быстрые, сфокусированные и надёжные тесты. 🎯

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

Урок «Моки, имитации и покрытие» бесплатный?

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

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

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

Нужен ли мне опыт, чтобы начать Dart Academy?

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

Сколько времени занимает урок «Моки, имитации и покрытие»?

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

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

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

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

  1. Ваш первый тест и expect
  2. group, setUp и tearDown
  3. Тестирование асинхронного кода и потоков
  4. Моки, имитации и покрытие
← Назад к Dart Academy