【发布时间】:2016-04-20 08:07:45
【问题描述】:
我已经成功创建了一个模拟的Person 对象,现在我正在尝试使用我的AddChild() 方法通过它的'Id 将一个子对象添加到对象中。我的测试如下所示:
public class PersonManagerMockTest
{
private static Guid personGuid;
[ClassInitialize]
public static void Init(TestContext test)
{
personGuid = Guid.NewGuid();
}
[TestMethod]
public void AddNewPerson()
{
//Arrange
var mockDbSet = new Mock<DbSet<Person>>();
mockDbSet.Setup(x => x.Add(It.IsAny<Person>()))
.Returns<Person>(p => p);
var mockContext = new Mock<IHiveTiesContext>();
mockContext.Setup(x => x.People)
.Returns(mockDbSet.Object);
var manager = new Manager(mockContext.Object);
//Assert
var _person = manager.CreatePerson("Winston", "Gabriel", DateTime.Now, 'M', personGuid);
var fatherid = mockDbSet.Object.SingleOrDefault(x => x.RowId == personGuid).Id;
manager.AddChild(new Person
{
FirstName = "Aaron",
LastName = "Gabriel",
DOB = new DateTime(1991, 01, 16),
FavoriteColor = "Red",
FatherId = fatherid,
});
//Act
mockDbSet.Verify(x => x.Add(It.IsAny<Person>()), Times.Once);
mockContext.Verify(x => x.SaveChanges(), Times.Once);
}
}
mockedPerson对象创建成功,但是问题出在这个语句:
var fatherid = mockDbSet.Object.SingleOrDefault(x => x.RowId == personGuid).Id;
我不确定如何从模拟的Person 对象中检索Id,并且我认为此语句为fatherid 返回了0,这意味着它是null。这是我第一次运行模拟,所以我还在学习。关于如何从这个模拟的Person 对象中检索Id 的任何建议?
我会感谢所有建议。谢谢。
【问题讨论】:
标签: c# unit-testing mocking entity-framework-6 moq