Question

J'ai 2 itinéraires enregistrés comme suit:

routes.MapRoute("GetAnEmail", "{controller}", new { controller = "Home", action = "GetAnEmail" }, new { httpMethod = new HttpMethodConstraint("POST") })
routes.MapRoute("Home", "{controller}/{action}", new { controller = "Home", action = "Index" })

J'ai un test unitaire valable pour le contrôleur Home comme suit:

 [Test]
 public void CanVerifyRouteMaps()
     {
         "~/".Route().ShouldMapTo<HomeController>(x => x.Index());
     }

Je sais que fonctionne GetAnEmail, mais comment une unité tester un parcours fléché?

Était-ce utile?

La solution

La réponse de Gratzy est proche, mais tout ce qui me montre comment faire un POST par le code.

Je pense que la solution est fait allusion dans blog de Stephen Walther . Je suis vraiment tester ma contrainte de route ici, qui est la clé. Stephen crée un HttpContext faux dans son exemple. Je vais essayer avec Rhino Mocks et une fois que j'ai un exemple de travail, est-ce republier. Si quelqu'un a déjà fait avec Rhino Mock ou Moq, s'il vous plaît poster aussi.

Autres conseils

Vous devez simuler un poste dans votre test unitaire.

System.Net.WebRequest req = System.Net.WebRequest.Create("your url");

req.ContentType = "text/xml";
req.Method = "POST";

byte[] bytes = System.Text.Encoding.ASCII.GetBytes("Your Data");
req.ContentLength = bytes.Length;
os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length); 


System.Net.WebResponse resp = req.GetResponse();
if (resp == null) return;
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());

str responsecontent = sr.ReadToEnd().Trim();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top