【发布时间】:2023-03-10 14:06:01
【问题描述】:
好的,我很难形成一个好的问题,所以请不要因为我在我的代码中试图做的事情是 moqing 一个列表,我在列表中得到 1 个对象。该对象由 moqed 数据库中的 .find 方法检索。但是它不返回值,因为在方法中数据以某种方式消失了,并且我的 Person 对象留下了 null 我将发布一些屏幕截图,希望能解释我要说的内容以及我正在使用的测试方法:
方法:
[TestMethod]
public void TestDetails()
{
Person test = new Person();
test.ID = 1;
test.City = "Eindhoven Area, Netherlands.";
test.Name = "Marijn van Donkelaar";
test.LearntSkillsAndLevelOfSkills = "Java:7, C#:4, SQL:4, PLSQL:4, Software Documentation:4, Software Development:4, HTML:2, CSS:2, jQuery:1";
test.ProfileImage = "/Images/hollemar.jpg";
test.PhoneNr = "0612345678";
test.SkillsToLearn = "ASP.net:2, JAVA:2";
test.Email = "fraylight@gmail.com";
Person test1 = new Person();
test1.ID = 2;
test1.City = "Eindhoven Area, Netherlands.";
test1.Name = "Jan Pietjes";
test1.LearntSkillsAndLevelOfSkills = "Java:7, C#:4, SQL:4, PLSQL:4, Software Documentation:4, Software Development:4, HTML:2, CSS:2, jQuery:1";
test1.ProfileImage = "/Images/hollemar.jpg";
test1.PhoneNr = "0612345678";
test1.SkillsToLearn = "ASP.net:2, JAVA:2";
test1.Email = "fraylight@gmail.com";
Person test2 = new Person();
test2.ID = 3;
test2.City = "Eindhoven Area, Netherlands.";
test2.Name = "Jasmine Test";
test2.LearntSkillsAndLevelOfSkills = "Java:7, C#:4, SQL:4, PLSQL:4, Software Documentation:4, Software Development:4, HTML:2, CSS:2, jQuery:1";
test2.ProfileImage = "/Images/hollemar.jpg";
test2.PhoneNr = "0612345678";
test2.SkillsToLearn = "ASP.net:2, JAVA:2";
test2.Email = "fraylight@gmail.com";
var data = new List<Person> { test, test1, test2 }.AsQueryable();
var mockSet = new Mock<DbSet<Person>>();
mockSet.As<IQueryable<Person>>().Setup(m => m.Provider).Returns(data.Provider);
mockSet.As<IQueryable<Person>>().Setup(m => m.Expression).Returns(data.Expression);
mockSet.As<IQueryable<Person>>().Setup(m => m.ElementType).Returns(data.ElementType);
mockSet.As<IQueryable<Person>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());
var mockContext = new Mock<PersonDBContext>();
mockContext.Setup(m => m.Persons).Returns(mockSet.Object);
var service = new PersonController(mockContext.Object);
ActionResult person = service.Details(1);
}
这有什么特别的原因吗?因为我真的没有看到它。我想这可能是因为起订量数据只认为它必须被调用一次然后消失但我不知道......我确实检查了数据并看到给定的 ID (1) 添加到 1对象,它在传递的列表中也可见
提前致谢,
马林
【问题讨论】:
标签: c# asp.net unit-testing moq entity-framework-6