我有一个像这样的ActionResult:
public ActionResult AddDoc(StudentModel studentModel)
{
var student = _studentHelper.GetStudent(studentModel, true);
_updateStudentManager.UpsertStudent(student);
return Json(new { result = true });
}
测试方法:
[TestMethod]
public void Calling_AddDoc_Returns_JsonResult()
{
var studentModel = new StudentModel()
{
Name = "Jon",
Id = "1"
};
var studentToAdd = new Student()
{
StudentId = "1",
Name = "Jon",
Course = "SomeCourse"
};
_studentHelper.Setup(x => x.GetStudent(studentModel, false)).Returns(studentToAdd);
var res = _controller.AddDoc(studentModel) as JsonResult;
Assert.AreEqual("{ result = True }", res.Data.ToString());
}
GetStudent()只是将传入的对象映射到Student的新实例并返回它。
测试因System.NullReferenceException'
而失败调试TestMethod显示此行
var student = _studentHelper.GetStudent(studentModel, true);
即使我试图单步进入方法,控制器中的也根本没有执行。
'学生' object为null。
我做错了什么?
提前致谢。
答案 0 :(得分:1)
您的设置调用有错误。此调用期望第二个参数为false。
_studentHelper.Setup(x => x.GetStudent(studentModel, false)).Returns(studentToAdd);
当您从控制器呼叫时,值为true。
var student = _studentHelper.GetStudent(studentModel, true);
你可能正在使用Moq的松散行为,使其返回null。