私は私がテストしているメソッドで呼び出されているプライベートメソッドを持っています。私はこのプライベートメソッドに渡されている正しいパラメータを確認したいです。私はMoqに以下の設定を書いています。これは私が望むものをテストしますが、実際にはアレンジ、アクト、アサートのパターンに従うことはできません。Moqでこのテストを書くには、より良い方法がありますか?
私は他のすべてのアサーションでアサーションが表示される類似のテストを実行する方法はありますか?現時点では、以下のコードはArrange内に存在します。私が言うべき
myClass.Setup(
x =>
x.myMethod(
It.IsAny<Person>>(),
It.IsAny<string>(),
It.IsAny<Person>(),
It.IsAny<ICollection<string>>(),
It.IsAny<ICollection<string>>(),
It.IsAny<bool>())).Callback
<Person, string, Person, Person, ICollection<string>, bool>(
(a, b, c, d, e, f) =>
{
Assert.AreEqual("NameA", a.Name);
Assert.AreEqual("StringB", b);
Assert.AreEqual("NameC", c.Name);
Assert.AreEqual(2, d);
var dList = d.ToList().OrderBy(x => x.Name);
Assert.AreEqual("PersonA", dList[0].Name)
Assert.AreEqual("PersonB", dList[1].Name);
});
、私はあなたの方法は、特定の入力で呼び出されたかどうかを確認するために検証をperfomできることを承知しています、しかし私は、ICollectionをparamsはを一致させる任意の方法を認識していないです。
こんにちは、ありがとうございます。あなたは正しいです、私はプライベートメソッドをテストするべきではありません。私はこの例を書くときに間違いを犯しました。それは実際に私がテストしようとしていた依存関係です。この場合、Ufukの回答が役に立ちます。 – user460667
@ user460667問題はありません。テストするべきでないものをテストしないよう他人に助言してください:) –