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,我认为重构代码的需要正好相反。