【问题标题】:How to mock method with parameters如何模拟带参数的方法
【发布时间】:2015-06-25 17:29:43
【问题描述】:

我仍在学习 Moq,并且正在使用 Moq 编写单元测试:

    [TestMethod]
    public void ProcessFileRowQueue()
    {
        var mock = new Mock<EdiEntityManager>();
        mock.Setup(s => s.GetFileRowEntitiesToProcess()).Returns(GetMockFileRowEntities);
        var controller = new EdiController("LOCAL", mock.Object);
                    controller.ProcessFileRowQueue();
    }

这行得通。

现在,我想确保 ensure ProcessFileRowQueue() 确实完成了它的工作。 EdiManager 上有一个我想模拟的方法,这样我就可以拦截参数并检查它们并确保它们是正确的。

public virtual void SaveNewEdiDocument(EdiDocument ediDocument, Translation translation)...

但是,我看不到如何使用参数模拟方法。

这是我想的:

mock.Setup(s => s.SaveNewEdiDocument(It.IsAny<EdiDocument>(), It.IsAny<Translation>()).Returns(ValidateResults));

我该如何写这个,或者我应该以不同的方式来验证结果?

【问题讨论】:

    标签: moq


    【解决方案1】:

    我找到了回调方法:

        [TestMethod]
        public void ProcessFileRowQueue()
        {
            var mock = new Mock<EdiEntityManager>();
            mock.Setup(s => s.GetFileRowEntitiesToProcess()).Returns(GetMockFileRowEntities);
            mock.Setup(s => s.SaveNewEdiDocument(It.IsAny<EdiDocument>(), It.IsAny<Translation>()))
                .Callback<EdiDocument, Translation>(VerifyResult);
            var controller = new EdiController("LOCAL", mock.Object);
    
            controller.ProcessFileRowQueue();
        }
    
        public void VerifyResult(EdiDocument ediDocument, Translation translation)
        {
    
        }
    

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多