MVC Moq框架简单测试问题

刚开始学单元测试这节,利用Moq框架作了一个最简单的测试,居然不过,求解答。

下面是Controller代码:

public class TestController : Controller
{
//
// GET: /Test/

public ActionResult Index()
{
return View("Index");
}

}

下面是测试代码:

[TestMethod]
public void test()
{
//这里测试没问题
//TestController controller = new TestController();
//var result = controller.Index() as ViewResult;
//Assert.IsNotNull(result);

//用Moq框架后测试不通过
Mock<TestController> MockController = new Mock<TestController>();
TestController controller
= MockController.Object;

//调试后result是null,为什么?
var result = controller.Index() as ViewResult;

Assert.IsNotNull(result);
}

为什么用Moq框架后测试不通过??

慕码人8056858
浏览 475回答 2
2回答

慕哥6287543

首先同意楼上,如果楼主是想用moq来测试的话那必须要做好重构的准备。 简单些个controller的测试吧: var MockStudents = new Mock<Lsit<Student>>();     TestController controller = New TestController(MockStudent.object);    //这里要求你的被测试的对象由构造函数传入 var result = controller.Index() as ViewResult; Assert.IsNotNull(result);希望这段代码能帮到你 

慕田峪9158850

1,mock出来的东西要设置:MockController.Setup(c => c.Index()).Returns(...) 2,Controller是你要测的东西(SUT:subject upder test),所以不应该用Mock,应该直接new。
打开App,查看更多内容
随时随地看视频慕课网APP