J'ai un contrôleur appelé NewsController, le constructeur de ce contrôleur reçoit un INewsService comme paramètre.Test d'unité pour vérifier si une méthode d'action appelée la couche de service
J'ai une méthode dans ce contrôleur appelé GetAllNews() qui retourne un résultat JSON que j'utilise pour remplir une donnée YUI. Je veux écrire un test unitaire qui vérifie si la méthode FindAll du service de presse a été appelée pour renvoyer tous les éléments de nouvelles. Comment ferais-je cela? Ce que j'ai actuellement est:
public JsonResult GetAllNews()
{
var items = newsService.FindAll();
var jsonResult = Json(items);
return jsonResult;
}
Mon test unitaire pour le contrôleur ressemble à:
public NewsControllerTest()
{
newsServiceStub = MockRepository.GenerateStub<INewsService>();
newsController = new NewsController(newsServiceStub);
}
[Test]
public void GetAllNews_should_use_news_service()
{
// Arrange
List<News> newsList = new List<News>();
newsServiceStub.Stub(s => s.FindAll()).Return(newsList);
// Act
var actual = newsController.GetAllNews();
// Assert
newsServiceStub.VerifyAllExpectations();
}
Le test passe avec le code ci-dessus. Mais si je devais changer GetAllNews() pour ressembler à ci-dessous, il passe également. Ne devrait-il pas échouer? Ce que je suis en train de tester est si GetAllNews() utilise le service de nouvelles:
public JsonResult GetAllNews()
{
return null;
}
En note, pourquoi considérez-vous cela comme un test utile? – bzlm
@bzim: Je suis un débutant, j'apprends encore. Ce n'est pas toujours clair pour moi ce qu'il faut tester et quoi ne pas faire. –