首页 新闻 会员 周边

MVC Moq框架简单测试问题

2
悬赏园豆:30 [已解决问题] 解决于 2011-06-21 19:32

刚开始学单元测试这节,利用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框架后测试不通过??

kirin123的主页 kirin123 | 初学一级 | 园豆:137
提问于:2011-05-28 11:40
< >
分享
最佳答案
0

首先同意楼上,如果楼主是想用moq来测试的话那必须要做好重构的准备。

简单些个controller的测试吧:

         
var MockStudents = new Mock<Lsit<Student>>();
     TestController controller = New TestController(MockStudent.object);
    //这里要求你的被测试的对象由构造函数传入

var result = controller.Index() as ViewResult;
Assert.IsNotNull(result);

希望这段代码能帮到你

 

收获园豆:20
today4king | 老鸟四级 |园豆:3499 | 2011-06-21 18:13
其他回答(1)
0

1,mock出来的东西要设置:MockController.Setup(c => c.Index()).Returns(...)

2,Controller是你要测的东西(SUT:subject upder test),所以不应该用Mock,应该直接new。

收获园豆:10
菜阿彬 | 园豆:215 (菜鸟二级) | 2011-05-28 12:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册