0

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

[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>(); 

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

4

2 回答 2

0

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

于 2013-04-05T16:15:26.903 回答
0

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

例如:存储库对象等。

于 2013-04-05T21:51:12.533 回答