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

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

慕田峪9158850
TA贡献1794条经验 获得超7个赞
1,mock出来的东西要设置:MockController.Setup(c => c.Index()).Returns(...)
2,Controller是你要测的东西(SUT:subject upder test),所以不应该用Mock,应该直接new。
- 2 回答
- 0 关注
- 474 浏览
添加回答
举报
0/150
提交
取消