代码之家  ›  专栏  ›  技术社区  ›  Nam G VU

Moq中VerifyAll()的目的是什么?

  •  39
  • Nam G VU  · 技术社区  · 14 年前

    我在一家报纸上读到了这个问题 What is the purpose of Verifiable() in Moq?

    2 回复  |  直到 7 年前
        1
  •  55
  •   Jota    9 年前

    VerifyAll() 是为了验证所有的期望都得到了满足。 假设你有:

    myMock.Setup(m => m.DoSomething()).Returns(1);
    mySut.Do();
    myMock.VerifyAll(); // Fail if DoSomething was not called
    

    HTH公司

        2
  •  30
  •   OlegI    5 年前

    嘲笑 对象,它是 苏特 . 假设它有两个方法,您希望将它们设置为不获取任何异常或为您的应用程序创建各种场景 :

    var fooMock = new Mock<Foo>();
    fooMock.Setup(f => f.Eat()).Returns("string");
    fooMock.Setup(f => f.Bark()).Returns(10);
    
    _sut = new Bar(fooMock.Object);
    

    所以那是 行为

    _sut.Test();
    

    现在你会的 断言 具有 VerifyAll()

    fooMock.VerifyAll();
    

    设置 方法是 打电话 Foo.Eat() or Foo.Bark() 如果没有调用,则会出现异常,测试将失败。所以,实际上,你 混合 安排和确定步骤。而且,您不能检查它被调用了多少次,您可以使用 .Verify (假设你有一些参数 Param 属性为 Name 在你的 Eat()

    fooMock.Verify(f => f.Eat(It.Is<Param>(p => p.Name == "name")), Times.Once);