ここにたくさんの良い答えがあります!依存関係に渡されるいくつかのクラスパラメーターについてアサーションを作成する必要があるまで、そのままの状態のMoq機能セットを使用します。ただし、そのような状況に陥った場合、It.Isマッチャーを使用したMoq検証機能はテストの失敗を特定するのに適しておらず、引数を取得するReturn / Callbackの方法は、不要なコード行をテストに追加します(そして長いテストは私にとっては大丈夫です)。
ここに要点があります:https : //gist.github.com/Jacob-McKay/8b8d41ebb9565f5fca23654fd944ac6bとMoq(4.12)拡張を使用して、前述の欠点なしにモックに渡される引数についてアサーションを作成するより宣言的な方法を提供します。確認セクションは次のようになります。
mockDependency
.CheckMethodWasCalledOnce(nameof(IExampleDependency.PersistThings))
.WithArg<InThing2>(inThing2 =>
{
Assert.Equal("Input Data with Important additional data", inThing2.Prop1);
Assert.Equal("I need a trim", inThing2.Prop2);
})
.AndArg<InThing3>(inThing3 =>
{
Assert.Equal("Important Default Value", inThing3.Prop1);
Assert.Equal("I NEED TO BE UPPER CASED", inThing3.Prop2);
});
Moqが同じことを達成する機能を提供しながら、宣言型であり、これが行う障害の分離を提供するなら、私は感激します。成功を祈っている!