Asp.net mvc 基于模拟控制器创建操作
我使用以下测试方法来测试控制器Asp.net mvc 基于模拟控制器创建操作,asp.net-mvc,unit-testing,mocking,moq,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 =
[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);
}
[TestMethod()]
公共无效重置测试()
{
var target=new Mock();
//var target=new PROJECT.Reset.Controllers.ResetController();
FormCollection表单=新建FormCollection();
表单集(“用户名”、“域\\用户名”);
表单设置(“密码”、“testpass123”);
表单集(“confirmpassword”、“testpass123”);
ViewResult预期值=新的ViewResult();
expected.ViewName=“重置”;
expected.ViewData.Model=rm;
ActionResult动作=target.Object。;
action=target.Object.Reset(表单);
ViewResult实际=(ViewResult)操作;
断言.AreEqual(预期、实际);
}
如果我使用:
var target = new Mock<PROJECT.Reset.Controllers.ResetController>();
var target=new Mock();
然后该操作将被计算为null。如果我将其更改为未注释的代码行下面的代码行,则将设置操作。你知道是什么导致了这种行为吗?你为什么要嘲笑这种行为?这似乎是您实际的SUT(测试中的解决方案)。所以,你根本不应该嘲笑它 您对模拟框架的理解可能不正确。您不应该模拟要测试的对象(在您的案例中是控制器对象)。只能对依赖项对象进行模拟 例如:存储库对象等