基于模拟控制器创建操作

时间:2013-04-05 15:48:36

标签: asp.net-mvc unit-testing mocking moq

我有以下用于测试控制器的测试方法。

[TestMethod()]
    public void ResetTest()
    {
        var target = new Mock<PROJECT.Reset.Controllers.ResetController>();
        //var target = new PROJECT.Reset.Controllers.ResetController();


        FormCollection form = new FormCollection();
        form.Set("username","domain\\username");
        form.Set("password","testpass123");
        form.Set("confirmpassword","testpass123");

        ViewResult expected = new ViewResult();
        expected.ViewName = "Reset";
        expected.ViewData.Model = rm;
        ActionResult action = target.Object.;

        action = target.Object.Reset(form);
        ViewResult actual = (ViewResult)action;            
        Assert.AreEqual(expected, actual);
    }

如果我使用:

var target = new Mock<PROJECT.Reset.Controllers.ResetController>(); 

然后将该操作评估为null。如果我将此更改为未注释的代码行,则表示正在设置操作。可能导致这种行为的任何想法?

2 个答案:

答案 0 :(得分:0)

你为什么嘲笑这个?看来这是你的实际SUT(测试中的解决方案)。所以,你根本不应该嘲笑它。

答案 1 :(得分:0)

您对Mocking框架的理解可能不正确。你不应该模拟你要测试的对象(在你的情况下是控制器对象)。您可以/仅针对依赖项对象进行模拟。

Ex:存储库对象等。