C# 最低起订量模拟值<;Obj>;vs新Obj();
最近我做了很多单元测试,我从C# 最低起订量模拟值<;Obj>;vs新Obj();,c#,nunit,tdd,moq,C#,Nunit,Tdd,Moq,最近我做了很多单元测试,我从Moq库中发现了Mock.of方法。阅读之后,我最终发现,Mock.Of是创建模拟接口实例的一个很好的选择,但是我可以通过new关键字自己创建对象的常规类呢?一些Nunit教程使用这种方法,这让我感到困惑,因为我觉得它在任何方面都没有用处 Person newPerson = new Person() { Name = "David", Surname = "Smith" }; Person mockedPerson = Mock.Of<Pers
Moq
库中发现了Mock.of
方法。阅读之后,我最终发现,Mock.Of
是创建模拟接口实例的一个很好的选择,但是我可以通过new
关键字自己创建对象的常规类呢?一些Nunit
教程使用这种方法,这让我感到困惑,因为我觉得它在任何方面都没有用处
Person newPerson = new Person() { Name = "David", Surname = "Smith" };
Person mockedPerson = Mock.Of<Person>(o => o.Name == "David" && o.Surname == "Smith");
Person newPerson=newPerson(){Name=“David”,姓氏=“Smith”};
mockedPerson=Mock.Of(o=>o.Name==“大卫”和&o.Name==“史密斯”);
这两个物体之间有什么区别吗?在这种情况下,
Mock.Of
是否有任何优势,或者我是否应该使用常规的new
关键字来创建类的新实例?我认为您显示的代码完全忽略了模拟的意义。
模拟应该在接口和抽象类上工作,所以您不必创建实际的对象。或者创建对象的模拟
因此,您可以执行Mock.Of
,然后分配测试中所需的一些值,但您不需要做的是首先创建对象并设置它,然后创建它的Mock
假设您有如下代码:
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)
var mockedPerson=Mock.Of();
模拟人。年龄=27岁;
int age=GetAge(mockedPerson);
A.男女平等(年龄27岁)
创建实际对象的模拟对我来说毫无意义。我认为您显示的代码完全没有理解模拟的意义。 模拟应该在接口和抽象类上工作,所以您不必创建实际的对象。或者创建对象的模拟 因此,您可以执行
Mock.Of
,然后分配测试中所需的一些值,但您不需要做的是首先创建对象并设置它,然后创建它的Mock
假设您有如下代码:
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)
var mockedPerson=Mock.Of();
模拟人。年龄=27岁;
int age=GetAge(mockedPerson);
A.男女平等(年龄27岁)
对我来说,创建实际对象的模拟对象毫无意义。是的,我完全同意你的看法。这就是为什么当我在一些教程中看到这种方法时,我会感到非常困惑,这也是我带着这个问题来到这里的原因。遗憾的是,我已经失去了资料来源,所以我无法指向那些教程。是的,我完全同意你的看法。这就是为什么当我在一些教程中看到这种方法时,我会感到非常困惑,这也是我带着这个问题来到这里的原因。遗憾的是,我已经丢失了源代码,所以我无法指向那些教程