演習 - テスト データを使用して C# コンソール アプリケーションでロジックの問題を公開する
MakeChangeメソッドは、testData配列を使用するときに、シミュレートされたトランザクションを正常に処理できます。 ただし、ロジックの問題は、ランダムに価格が設定された項目のより大きなデータ セットを使用してトランザクションをシミュレートするときに公開されます。 この問題は、アプリケーションを徹底的にテストすることの重要性を示しています。
仕様
このチャレンジ演習では、トランザクションをシミュレートするために使用する変数を構成し、トランザクション レポートに予想される不一致が含まれていることを確認する必要があります。
シミュレートされたトランザクションには、次の要件が適用されます。
- 最上位レベルのステートメントは、ランダムに生成された品目コストを使用してトランザクションをシミュレートします。
- 最上位レベルのステートメントは、範囲
itemCost内の2 - 49のランダムな値を生成します。 - 最上位レベルのステートメントは、100 個のトランザクションをシミュレートします。
報告されるトランザクションの出力には、次のものが含まれている必要があります。
- 試みられた 100 件のトランザクションの記録。
- "トランザクションを実行できませんでした: InvalidOperationException: トランザクションを完了するのに十分な金額が提供されていません" というメッセージのインスタンス。
- 次を示すメッセージのインスタンス:"トランザクションを実行できませんでした:InvalidOperationException:レジは、指定された現金を変更できません。"
- 報告された予想される till 値の間の不一致。
作業を確認する
指定したシミュレーション要件を実装するときに、アプリケーションが予期した結果を生成することを検証するには、次の手順を実行します。
Visual Studio Code で ChallengeProject フォルダーが開かれていることを確認します。
エクスプローラー ビューで、 ChallengeProject フォルダーと Starter フォルダーを展開します。
Starter フォルダーには、このガイド付きプロジェクト モジュールのサンプル アプリケーションが含まれています。
Visual Studio Code エディターで Program.cs ファイルを開きます。
デバッグ環境を構成し、構成を起動します。
シミュレートされたトランザクション (
useTestData = true) にtestData配列を使用するようにアプリケーションを構成します。デバッグ セッションでアプリケーションを実行します。
アプリケーションによって生成されたトランザクション レポートで、"reported" と "expected" の値が等しいことを確認します。
「仕様」セクションのシミュレーション要件を満たすようにアプリケーション変数を構成します。
デバッグ セッションでアプリケーションを実行します。
アプリケーションが次の出力要件を満たしていることを確認します。
トランザクション レポートには、試行された 100 件のトランザクションのレコードが含まれています。
トランザクション レポートには、報告された予想される till 値の間に不一致が含まれています。
トランザクション レポートには、次のメッセージのインスタンスが含まれています。
Could not make transaction: InvalidOperationException: Not enough money provided to complete the transaction.Could not make transaction: InvalidOperationException: The till is unable to make change for the cash provided.
この演習の結果を検証したら、この課題の次の演習に進みます。