请问如何使用Moq模拟MVC表单提交?我想针对几个不同的表单提交进行单元测试。
我在谷歌上搜索了一下,但没有找到完整的指南。
谢谢。
编辑:添加代码
[TestMethod]
public void SubscriptionControllerTest()
{
var subscriptionViewModel = new SubscriptionViewModel();
//HTTP REQUEST SET UP
var httpRequest = new Mock<HttpRequestBase>();
httpRequest.Setup(r => r.Path).Returns("/Subscription/SendEmail");
httpRequest.Setup(r => r.Form).Returns(delegate()
{
var nv = new NameValueCollection();
nv.Add("FirstName", "John");
nv.Add("LastName", "Smith");
nv.Add("Email", "jsmith@host.com");
nv.Add("Comments", "Comments are here...");
nv.Add("ReceiveUpdates", "true");
return nv;
});
//HTTP CONTEXT SET UP
var httpContext = new Mock<HttpContextBase>();
httpContext.Setup(c => c.Request).Returns(httpRequest.Object);
var subscriptionController = new Mock<SubscriptionController>();
subscriptionController.Setup(s => s.HttpContext).Returns(httpContext.Object);
var result = subscriptionController.Object.SendEmail(subscriptionViewModel);
Assert.AreEqual(((ViewResult)result).ViewName, "Index");
}
}
我有一个名为SubscriptionController的控制器,在其中,我有一个名为SendEmail的Action方法。我希望能够使用上面的Test方法来运行我的Subscription / SendEmail。 我的视图是一个表单,包含以下字段:名字,姓氏,电子邮件,评论和复选框。 我需要模拟这个表单以及模拟我的控制器、http请求和上下文。我有点困惑要模拟什么以及要使用什么作为真实的东西。谢谢任何澄清。