我是Moq的新手,希望不仅在单元测试中使用它,而且在代码中也能运用自如。
考虑到这个实体:
namespace TestBed.Domain.Entities
{
public class Person
{
public string LastName { get; set; }
public string FirstName { get; set; }
public string PhoneNumber { get; set; }
public string JobTitle { get; set; }
}
}
还有这个抽象存储库:
using TestBed.Domain.Entities;
namespace TestBed.Domain.Abstract
{
public interface IPersonRepository
{
Person GetPerson();
}
}
我想使用Moq来填充一个虚拟的人员对象,并将填充后的“对象”传递到存储库方法之外。我该如何做?
using TestBed.Domain.Abstract;
using TestBed.Domain.Entities;
using Moq;
namespace TestBed.Domain.Concrete
{
public class MockPersonReqpository
{
Person GetPerson()
{
Mock<IPersonRepository> mock = new Mock<IPersonRepository>();
mock.Setup(m => m.GetPerson()).Returns(new Person()
{
FirstName = "Joe",
LastName = "Smith",
PhoneNumber = "555-555-5555"
});
return mock.Object // NO
}
}
}
var mock = new Mock<T>()
会产生与var mock = new Mock<T>.Setup()
相同的结果类型。但事实并非如此。所以,我不应该在同一个调用中尝试构造和操作。 - testpattern