Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用隔离.Fake.AllInstance创建分离的伪造对象<&燃气轮机;()_C#_Unit Testing_Typemock_Typemock Isolator - Fatal编程技术网

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();

        });

    }