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

Jon*_*Jon 2 .net c# tdd unit-testing 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);
    }
Run Code Online (Sandbox Code Playgroud)

Cla*_*edi 5

不知道你为什么要使用回调.看起来

mock.Setup(x => x.WriteData(It.IsAny<string>())).Verifiable()

...

mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3))
Run Code Online (Sandbox Code Playgroud)

也会这样做.

而且我认为你也可以避免设置,只需使用验证线就可以了

mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3))
Run Code Online (Sandbox Code Playgroud)