У меня есть частный метод, который вызывается в методе, который я тестирую. Я хочу проверить, что правильные параметры передаются этому частному методу. Я написал следующую настройку в Moq, которая проверит то, что я хочу, однако это не позволяет мне следовать шаблону Arrange, Act, Assert.Есть ли лучший способ написать этот тест с Moq?
Есть ли способ, которым я могу выполнить аналогичный тест, когда утверждение может появляться со всеми моими другими утверждениями? На данный момент код находится в рамках соглашения.
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.
привет, спасибо за комментарий. Вы правы, я не должен тестировать частные методы. Я допустил ошибку при написании примера, на самом деле это была зависимость, которую я пытался проверить. Ответ, данный Уфуком, помогает в этом случае. – user460667
@ user460667 не проблема, просто посоветуйте другим не тестировать, что не следует тестировать :) –