C# 使用隔离.Fake.AllInstance创建分离的伪造对象<&燃气轮机;()
我有一个C# 使用隔离.Fake.AllInstance创建分离的伪造对象<&燃气轮机;(),c#,unit-testing,typemock,typemock-isolator,C#,Unit Testing,Typemock,Typemock Isolator,我有一个学生班和一个课程班: public class Student { public Student() { courses = Enumerable.Range(0, 3).Select(i => new Course { Grade = random.Next(0, 100) }).ToList(); } private static Random random = new Random(); public List<
学生
班和一个课程
班:
public class Student
{
public Student()
{
courses = Enumerable.Range(0, 3).Select(i => new Course { Grade = random.Next(0, 100) }).ToList();
}
private static Random random = new Random();
public List<Course> courses { get; }
public void StudentTestMethod() => courses.ForEach(course => course.CourseMethod());
}
public class Course
{
public int Grade { get; set; }
public void CourseMethod() => Console.WriteLine(string.Format("Not Faked, grade = {0}", Grade));
}
我试图伪造课程
的所有实例,以便每个学生都有3个不同的分数,但我得到的结果是,例如:
Faked = 27 Faked = 27 Faked = 27, Faked = 44 Faked = 44 Faked = 44, Faked = 11
Faked = 11 Faked = 11, Faked = 62 Faked = 62 Faked = 62, Faked = 52 Faked = 52
Faked = 52.
关于如何使用Typemock隔离器让每个学生有3个不同的分数,你有什么想法吗?你可以这样写你的测试:
public void TestMethod()
{
List<Course> CourseList = new List<Course>();
Enumerable.Range(0, 5).ToList().ForEach(i =>
{
Enumerable.Range(0, 3).ToList().ForEach(j =>
{
var fake = Isolate.Fake.NextInstance<Course>();
Isolate.WhenCalled(() => fake.CourseMethod()).DoInstead(c =>
{
Console.WriteLine(string.Format("Faked = {0}", fake.Grade));
});
CourseList.Add(fake);
}
);
new Student().StudentTestMethod();
});
}
public void TestMethod()
{
List CourseList=新列表();
Enumerable.Range(0,5).ToList().ForEach(i=>
{
Enumerable.Range(0,3).ToList().ForEach(j=>
{
var fake=Isolate.fake.NextInstance();
孤立.WhenCalled(()=>false.CourseMethod()).DoInstead(c=>
{
WriteLine(string.Format(“Faked={0}”,fake.Grade));
});
课程列表。添加(假);
}
);
new Student().StudentTestMethod();
});
}
我读了一些书,了解到Isolate.Fake.AllInstances()会创建一个句柄,每次伪造一个新对象时,它的行为都会像句柄一样,因此输出是有意义的。。。我仍然不明白如何创建分离的假对象,有什么想法吗?
public void TestMethod()
{
List<Course> CourseList = new List<Course>();
Enumerable.Range(0, 5).ToList().ForEach(i =>
{
Enumerable.Range(0, 3).ToList().ForEach(j =>
{
var fake = Isolate.Fake.NextInstance<Course>();
Isolate.WhenCalled(() => fake.CourseMethod()).DoInstead(c =>
{
Console.WriteLine(string.Format("Faked = {0}", fake.Grade));
});
CourseList.Add(fake);
}
);
new Student().StudentTestMethod();
});
}