这仍然是对模拟的验证测试吗?

时间:2012-03-22 13:21:15

标签: c# .net unit-testing tdd moq

正如标题所暗示的那样。将为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);
    }

1 个答案:

答案 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))