![](/img/trans.png)
[英]How to mock `object.Equals(object obj)` for an interface using Moq
[英]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)
创建一个实际对象的模拟对我来说毫无意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.