刚开始学单元测试这节,利用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框架后测试不通过??
首先同意楼上,如果楼主是想用moq来测试的话那必须要做好重构的准备。
简单些个controller的测试吧:
var MockStudents = new Mock<Lsit<Student>>();
TestController controller = New TestController(MockStudent.object);
//这里要求你的被测试的对象由构造函数传入
var result = controller.Index() as ViewResult;
Assert.IsNotNull(result);
希望这段代码能帮到你
1,mock出来的东西要设置:MockController.Setup(c => c.Index()).Returns(...)
2,Controller是你要测的东西(SUT:subject upder test),所以不应该用Mock,应该直接new。