C# Mock中的访问字段

C# Mock中的访问字段,c#,reflection,C#,Reflection,我很难想象这一点 下面是一个场景 我的单元测试 public void AddStudentTest() { StudentService target = new StudentService (new Mock1(),new Mock2(), new Mock3(), new Mock4(), new Mock5()); string name = "Sample Name"; int actual = 0;

我很难想象这一点

下面是一个场景

我的单元测试

    public void AddStudentTest()
    {
        StudentService target = new StudentService (new Mock1(),new Mock2(), new Mock3(), new Mock4(), new Mock5());
        string name  = "Sample Name";
        int actual = 0;
        string[] userNames = new string[] {"Sample User Name" };
        string[] roleName = new string[] {"Sample Role" };
        target.AddStudent (name, userNames, roleNames);            
        Assert.IsNotNull(actual);
    }

我正在模拟3中测试一个方法。不幸的是,方法返回类型为VOID。我需要检查交易是否成功。我在这个方法“AddStudent”上添加了一个字段resultFlag,但是我如何从单元测试中访问它呢?

正如您所说的,您确实在测试Mock3方法,您可以访问该代码,所以我相信您的测试用例可能会被重写为类似的代码

public void AddStudentTest()
{
    var dbMock = new Mock3()
    StudentService target = new StudentService (new Mock1(),new Mock2(), dbMock, new Mock4(), new Mock5());
    string name  = "Sample Name";
    int actual = 0;
    string[] userNames = new string[] {"Sample User Name" };
    string[] roleName = new string[] {"Sample Role" };
    target.AddStudent (name, userNames, roleNames);                    
    Assert.IsNotNull(dbMock.Students.FirstOrDefault())
}

谢谢你的回复。我昨天试过这个代码,结果不正确。在我的mock3上,在成功“Add”之后,我将resultflag从0提高到1,不幸的是,AddStudent位于类2(sample)上,并在Mock方法中调用该方法,该方法将integer返回给类2。我需要的是,直接从模拟类获取标志值,以便在测试方法中断言。@Scuttle,我认为重构代码的需要正好相反。