この質問に答えるのを手伝ってください: iOS アプリのローカル データベース (この場合は SQLite データベース) と対話するデータ アクセスの単体テストを作成する必要があります。もしそうなら、どのように私はそれらを書くことができますか? モックアップを使用するか、db ファイルを使用します。
2 に答える
以前は、テスト ケースごとに新しい SQLite DB ファイルを作成することでこれを行っていました。テスト ケースでは、コードが DB に書き込み、書き込まれたものとまったく同じものを読み取ることをテストします。このようにして、すべてのテスト データがコード内にあるため、テスト ケースがより明確になります。
このアプローチは速度を犠牲にしますが、単体テストは依然としてかなり高速に実行されました。
SQLite にアクセスする機能だけでなく、プログラムのロジックをテストしたいと仮定すると、テスト ダブル (モック オブジェクトまたはダミー オブジェクトのいずれか) を使用すると、個別の db ファイルよりも維持しやすいテストが得られます。別の db ファイルには、正しい行に正しいデータが含まれている必要があり、1 つのテストで変更した場合は、次のテストの前にリセットする必要があります。テスト データが同期しなくなると、テストが失敗し始めます。リテラル テスト値を持つモック オブジェクトは、決して同期しません。
モックを使用すると、依存性注入を使用することがほとんど強制されるため、実際のデータ オブジェクトを置き換えることができます。db ファイルを使用しても、依存性注入を使用する必要はありません。したがって、DI パターンに従わない多くの既存のコードを使用している場合、db ファイルは「簡単な」選択ですが、オブジェクト指向の観点からは最良の選択ではありません。