我有一个私有方法,它在我正在测试的方法中被调用。我想验证是否将正确的参数传递给这个私有方法。我在 Moq 中编写了以下设置,它将测试我想要的内容,但是它并没有真正让我遵循 Arrange、Act、Assert 模式。
有什么方法可以执行类似的测试,其中断言可以与我的所有其他断言一起出现?目前,下面的代码位于 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);
});
我应该说,我知道您可以执行验证以检查是否已使用某些输入调用方法,但是我不知道有任何匹配 ICollection 参数的方法。