Moqを使用してMVCフォームの投稿を模擬する方法を教えてください。Moqを使ってMVCフォームPOSTを模擬する方法
私が望むのは、いくつかの異なるフォーム投稿に基づいて私の方法をユニットテストすることです。
私はGoogleにこれを試してみましたが、そこにはトップダウンガイドがありません。
おかげ
EDIT:追加のコード
[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", "[email protected]");
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というアクションメソッドがあります。 上記のこのテスト方法を使用してSubscription/SendEmailを実行したいと考えています。 私のビューは、名前、姓、電子メール、コメント、チェックボックスの各フィールドを持つフォームです。 私はこのフォームを嘲笑し、私のコントローラー、httpリクエストとコンテキストをモックする必要があります。私は何を嘲笑して何を本当のものとして使うのかちょっと混乱しています。すべての説明をありがとう。
モックしようとしているクラス(または関連する部分)を投稿できますか? –