MoqはクラスのAddCustomer
機能を実行しません。したがって、現在のMoq
セットアップではConfirmation
オブジェクトを取得する方法はありません。つまり、AddCustomer
の実際の実装が作成されている可能性があります。
別のテストの入力としてConfirmation
が必要な場合は、の部分をテストの一部に配置してテスト中のメソッドの入力パラメータを作成します。
あなたがAddCustomer
関数を呼び出すことによって、この問題にアプローチした場合は、Confirmation
作成コードと確認を使用しているコードのカップリングを作成します。作成コードが変更された場合、テストは他の領域で破損する可能性があります。のデバッグは困難で時間がかかる可能性があります。
ソフトウェアの2つの部分のこの相互作用をテストする必要があるため、統合テストではこのカップリングが適切です。ユニットテストでは、AddCustomer
の機能を他の部分から切り離すことを推奨します。
もう1つの方法は、AddCustomer
機能が作成されているかもしれないConfirmation
オブジェクトを作成することです。これは手動またはより複雑なオブジェクトのためにいくつかのキャプチャ/リプレイ手法(例えば、オブジェクトをXMLまたはJSON関数にシリアル化し、静的なXMLまたはJSONを解析することによって他のテストで模擬用オブジェクトConfirmation
を作成するデシリアライザによって文字列。例:
string capturedJson = "...."; // <= JSON of a Confirmation object
var confirmation = JsonConvert.DeserializeObject<Confirmation>(capturedJson);
_service
.Setup(x =>x.AddCustomer(It.IsAny<Customer>))
.Returns(confirmation);
target.SomeConfirmationObjectUsingFunction(_service);
あなたの特定の問題を明確にしたり、必要な正確に何を強調表示するために、追加の詳細情報を追加してください。それが現在書かれているとして、それはあなたが求めている正確に何を伝えるのは難しいです。掲載して[方法を参照してください](http://stackoverflow.com/help/how-to-ask)ページを参照してください。 – Nkosi