【问题标题】:Is this still a verification test on a Mock?这仍然是对 Mock 的验证测试吗?
【发布时间】:2012-03-22 13:21:15
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    不确定您为什么要使用回调。看来

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-11
      • 2012-07-20
      • 2020-09-12
      • 2012-11-25
      • 1970-01-01
      • 2022-01-08
      • 2022-11-16
      • 1970-01-01
      相关资源
      最近更新 更多