Ich habe einen Controller namens NewsController, der Konstruktor dieses Controllers erhält einen INewsService als Parameter.Unit-Test, um zu prüfen, ob eine Aktionsmethode die Service-Schicht
Ich habe eine Methode in diesem Controller namens GetAllNews(), die ein JSON-Ergebnis zurückgibt, das ich zum Auffüllen einer YUI-Datentabelle verwenden. Ich möchte einen Komponententest schreiben, der prüft, ob die FindAll-Methode des Nachrichtendienstes aufgerufen wurde, um alle Nachrichten zurückzugeben. Wie würde ich das tun? Was ich zur Zeit habe, ist:
public JsonResult GetAllNews()
{
var items = newsService.FindAll();
var jsonResult = Json(items);
return jsonResult;
}
My Unit-Test für die Steuerung wie folgt aussieht:
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();
}
Der Test mit dem obigen Code übergibt. Aber wenn ich GetAllNews() ändern würde, um wie unten zu aussehen, dann übergibt es auch. Sollte es nicht scheitern? Was ich versuche, ist zu prüfen, ob GetAllNews(), um den Nachrichtendienst verwendet:
public JsonResult GetAllNews()
{
return null;
}
Als eine Randnotiz, warum halten Sie dies für einen nützlichen Test? – bzlm
@bzim: Ich bin ein Anfänger, immer noch lernen. Es ist mir nicht immer klar, was ich testen soll und was nicht. –