2010-03-04 11 views
5

Je suis encore à trouver quelques-uns des points les plus fins autour de tester mon application ASP.Net MVC2 en utilisant NUnit. Dans l'ensemble, tester mes ActionResults, modèles, respositories et autres est simple, mais je n'ai pas eu à tester les méthodes Ajax auparavant et je voudrais des conseils sur la meilleure façon de procéder.Comment testez-vous vos actions ASP.Net MVC JsonResult?

Merci d'avance.

Répondre

6

Le test d'une action du contrôleur retournant un JsonResult ne devrait pas être différent de tester d'autres actions. Considérez le scénario suivant:

public class MyModel 
{ 
    public string Name { get; set; } 
} 

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return Json(new MyModel { Name = "Hello World" }); 
    } 
} 

Et le test unitaire (désolé il est MSTest, je n'ai pas NUnit atm, mais il devrait être assez détroit avant):

// arrange 
var sut = new HomeController(); 

// act 
var actual = sut.Index(); 

// assert 
Assert.IsInstanceOfType(actual, typeof(JsonResult)); 
var jsonResult = (JsonResult)actual; 
Assert.IsInstanceOfType(jsonResult.Data, typeof(MyModel)); 
var model = (MyModel)jsonResult.Data; 
Assert.AreEqual("Hello World", model.Name); 
+1

Pourquoi vous revendiquez IsInstanceOfType? Si ce n'est pas le type, une exception sera levée de toute façon. – gdoron

0

IMO, il est préférable de ne pas tester vos méthodes Ajax (je veux dire celles du client, contrôleurs sur le serveur que vous pouvez tester facilement) mais de tester l'interface utilisateur du client. Afin de tester l'interface utilisateur, je vous recommande d'utiliser Selenium RC ou WatiN.

Questions connexes