繁体   English   中英

最小起订量 <Obj> 与新的Obj();

[英]Moq Mock.Of<Obj> vs new Obj();

我最近正在做大量的单元测试,并且从Moq库中发现了Mock.Of<T>方法。 看完最终我发现了Mock.Of是创建嘲笑接口实例很好的选择,但对普通班,我可以通过自己的对象有什么new的关键字? Nunit一些教程使用了这种方法,这让我感到困惑,因为我发现它没有任何用处。

    Person newPerson = new Person() { Name = "David", Surname = "Smith" };
    Person mockedPerson = Mock.Of<Person>(o => o.Name == "David" && o.Surname == "Smith");

这两个对象之间有什么区别吗? 在这种情况下, Mock.Of有什么优势,还是应该使用常规的new关键字创建类的新实例?

我认为您显示的代码完全失去了模拟的意义。 模拟应该在接口和抽象类上起作用,因此您不必创建实际的对象。 要么创建一个对象的模拟

因此,您可以执行Mock.Of<Person> ,然后分配测试中所需的一些值,但是您不要做的就是首先创建对象,然后设置它,然后创建它的模拟。

假设您有这样的代码:

public interface IPerson
{
     some method and property signatures
}

那你有

public class Person : IPerson
{ 
    some code here
}

现在假设您有一个使用IPerson作为参数的方法

那么您可以执行以下操作:

var mockedPerson = Mock.Of<IPerson>();
mockedPerson.Age = 27;

int age = GetAge(mockedPerson);
Assert.AreEqual(age, 27)

创建一个实际对象的模拟对我来说毫无意义。

模仿者<object> VS模拟<object> ()<div id="text_translate"><p> 我目前对如何模拟感到困惑。</p><p> 我正在使用最小起订量。 为了模拟对象,我通常这样写</p><pre> var mockIRepo = new Mock<IRepo>();</pre><p> 但是,我需要为我的设置创建模拟 object。</p><p> 选项 1 以这种方式模拟仅包含属性的我的<strong>object</strong>是否更好?</p><pre> var object = Mock.Of<Object>()</pre><p> <strong>Option2</strong>或者这样</p><pre> var object = new Mock<Object>()</pre><p> 我读过选项 2 有 setupproperties,这对我来说有点可疑,因为我也可以在选项 1 中设置属性。</p><p> <strong><em>那有什么区别呢?</em></strong> <strong><em>或者,还有更好的方法?</em></strong></p></div></object></object>

[英]Mock.Of<Object> VS Mock<Object>()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用Moq模拟接口的`object.Equals(object obj)` 模仿者<object> VS模拟<object> ()<div id="text_translate"><p> 我目前对如何模拟感到困惑。</p><p> 我正在使用最小起订量。 为了模拟对象,我通常这样写</p><pre> var mockIRepo = new Mock<IRepo>();</pre><p> 但是,我需要为我的设置创建模拟 object。</p><p> 选项 1 以这种方式模拟仅包含属性的我的<strong>object</strong>是否更好?</p><pre> var object = Mock.Of<Object>()</pre><p> <strong>Option2</strong>或者这样</p><pre> var object = new Mock<Object>()</pre><p> 我读过选项 2 有 setupproperties,这对我来说有点可疑,因为我也可以在选项 1 中设置属性。</p><p> <strong><em>那有什么区别呢?</em></strong> <strong><em>或者,还有更好的方法?</em></strong></p></div></object></object> Mock.Of <T> 使用构造函数参数 Object.Equals(obj1,obj2)vs obj1.Equals(obj2)? 如何模拟 dbSet.AddAsync(obj).Entity 参考平等性能差异? ((object)obj1 ==(object)obj2)vs。object.ReferenceEquals(obj1,obj2) foreach(Derived obj in new List <Base>()) 如何使用Moq模拟新实例 词典 <obj, obj> 使用发射到obj 如何使用Mock.Of模拟没有默认构造函数的类 <T> ()?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM