正如标题所暗示的那样。将为DataIn中的每个拆分CSV项调用WriteData。我想确定已成功调用WriteData。通过添加回调并对列表执行断言,这仍然是模拟验证。
[Test]
public void DataIn_GoodRead_LoggedToFile()
{
Moq.Mock<IFileLogger> mock;
MyLogic logic = SetupLogic(out mock);
List<string> dataLogged = new List<string>();
mock.Setup(x => x.WriteData(It.IsAny<string>()))
.Callback(delegate(string s) { dataLogged.Add(s); });
logic.DataIn(1, "1,2,3");
Assert.AreEqual(3, dataLogged.Count);
}
答案 0 :(得分:5)
不确定为什么要使用回调。似乎
mock.Setup(x => x.WriteData(It.IsAny<string>())).Verifiable()
...
mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3))
也会这样做。
我认为您也可以避免设置并只使用验证行,因此您只能
mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3))