代码之家  ›  专栏  ›  技术社区  ›  William

Moq中的单元测试Mock/Stub定义

  •  13
  • William  · 技术社区  · 15 年前

    我在单元测试方面得到的任何阅读资料或建议都表明,Mock和Stub的定义有明显的区别。我目前对这些定义的理解如下

    你的测试来做最后的断言

    存根:一种假货,将用于 隔离依赖项的测试,但是 不能断言

    也许我太迂腐了,只是我一直觉得编程中的语言非常严格,更喜欢正确使用它,特别是当其他开发人员可能要接管一个项目时。

    4 回复  |  直到 14 年前
        1
  •  16
  •   Eric King    9 年前

    Moq project site ,Moq提供:

    通过一个简单的 MockBehavior

    在模拟、存根等之间缺乏区别是一个深思熟虑的设计决定;作为一个例子,我更喜欢这样的设计决定。如果我需要一个 我打电话给莫克 Verify() 在上面。如果没有,就没有了 验证() . 我喜欢简单,我没有发现自己遗漏了两者之间的区别 mock stub

        2
  •  11
  •   Don Roby    15 年前

    Mocks Aren't Stubs 我认为这一点很清楚。

    mock用于行为验证,而stub提供虚假数据并通常参与状态验证。

        3
  •  3
  •   eglasius    15 年前

    我觉得这只是一个愚蠢的讨论。

        4
  •  0
  •   jyoungdev Thilo    15 年前

    事实上,最小起订量可以创造真正的存根。从 Moq Quick Start page :

    * Setup a property so that it will automatically start tracking its value (also known as Stub):
    
      // start "tracking" sets/gets to this property
      mock.SetupProperty(f => f.Name);
    
      // alternatively, provide a default value for the stubbed property
      mock.SetupProperty(f => f.Name, "foo");
    
    
      // Now you can do:
    
      IFoo foo = mock.Object;
      // Initial value was stored
      Assert.Equal("foo", foo.Name);
    
      // New value set which changes the initial value
      foo.Name = "bar";
      Assert.Equal("bar", foo.Name);
    
    * Stub all properties on a mock (not available on Silverlight):
    
      mock.SetupAllProperties();
    

    嗯,假货口味之间的区别最好被认为是 功能 而不是那些假货 类型

    推荐文章