0Pricing
Dart Academy · レッスン

Mock、Fake、カバレッジ

ユニットを分離し、テスト範囲を測定します

「Mock、Fake、カバレッジ」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

ユニットを分離する

ユニットテストでは、1つの部分を分離して確認します。実際のデータベースやネットワークはテストを遅く、不安定にするため、置き換えて使用します。🔌

テストダブル

テストダブルは、実際の依存先の代わりになるものです。よく使う種類には、mock、fake、stubがあります。

Fakeとは

fakeは、動作するものの簡略化された実装です。たとえば、実際のデータベースの代わりにメモリ上のリストを使います。

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

Mockとは

mockは、どのように呼び出されたかを記録するため、最終的な値だけでなく、やり取りも検証できます。

mockitoパッケージ

mockitoパッケージはmockを自動生成します。対象の型にアノテーションを付け、build_runnerを実行して生成します。

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

whenでスタブを設定する

whenを使ってmockの動作を定義します。「このメソッドが呼ばれたら、この値を返す」と指定することで、動作を予測可能にします。

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

呼び出しを検証する

verifyを使うと、メソッドが呼び出されたか、何回呼び出されたかをアサートできます。コードが依存先と正しくやり取りしたことを確認できます。

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

非同期処理をスタブ化する

Futureを返すメソッドにはthenAnswerを使って動作を定義し、mockから非同期の結果を返せるようにします。

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

MockとFakeの違い

現実的な動作が必要な場合はfakeを使い、どの呼び出しが行われたかを重視する場合はmockを使います。

Coverageとは

Coverageは、テストが実際に実行した行を測定します。高いカバレッジは十分なテストの手がかりになりますが、正しさを保証するものではありません。

カバレッジを生成する

coverageの収集を有効にしてテストを実行し、そのデータを読み取り可能なレポートやツールにアップロードできる形式に変換します。

dart test --coverage=coverage

クイックチェック

呼び出しを記録して検証できるテストダブルはどれですか?

まとめ

fakeとmockでユニットを分離し、whenでスタブを設定し、呼び出しを検証して、カバレッジを測定しました。高速で、焦点が明確で、信頼できるテストです。🎯

よくある質問

「Mock、Fake、カバレッジ」レッスンは無料ですか?

はい。「Mock、Fake、カバレッジ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「Mock、Fake、カバレッジ」で何を学びますか?

ユニットを分離し、テスト範囲を測定します ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Mock、Fake、カバレッジ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 最初の test と expect
  2. group、setUp、tearDown
  3. 非同期コードと Stream のテスト
  4. Mock、Fake、カバレッジ
← Dart Academyに戻る