【发布时间】:2011-12-14 14:25:08
【问题描述】:
谁能告诉我如何使用 Moq 模拟 MVC 表单帖子?
我只想根据几个不同的表单帖子对我的方法进行单元测试。
我为此尝试在 Google 上搜索,但那里没有从上到下的指南。
谢谢
编辑:添加代码
[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 的操作方法。 我希望能够使用上面的这个测试方法运行我的订阅/发送电子邮件。 我的视图是一个包含以下字段的表单:名字、姓氏、电子邮件、评论和一个复选框。 我需要模拟这个表单并模拟我的控制器、http 请求和上下文。我有点困惑什么要模拟,什么是真实的。感谢您的澄清。
【问题讨论】:
-
您可以发布您要模拟的课程(或课程的相关部分)吗?
标签: forms model-view-controller post mocking moq