我有以下用于测试控制器的测试方法。
[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。如果我将此更改为未注释的代码行,则表示正在设置操作。可能导致这种行为的任何想法?
答案 0 :(得分:0)
你为什么嘲笑这个?看来这是你的实际SUT(测试中的解决方案)。所以,你根本不应该嘲笑它。
答案 1 :(得分:0)
您对Mocking框架的理解可能不正确。你不应该模拟你要测试的对象(在你的情况下是控制器对象)。您可以/仅针对依赖项对象进行模拟。
Ex:存储库对象等。