我有一個名爲NewsController的控制器,這個控制器的構造函數接收一個INewsService作爲參數。單元測試檢查一個叫做服務層的動作方法
我在這個控制器中有一個名爲GetAllNews()的方法,它返回一個JSON結果,我用它來填充一個YUI數據表。我想編寫一個單元測試,檢查新聞服務的FindAll方法是否被調用以返回所有新聞項目。我將如何做到這一點?我目前擁有的是:
public JsonResult GetAllNews()
{
var items = newsService.FindAll();
var jsonResult = Json(items);
return jsonResult;
}
的控制我的單元測試是這樣的:
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();
}
測試與上面的代碼通過。但是,如果我改變GetAllNews()看起來像下面那麼它也通過。它不應該失敗嗎?我試圖測試是,如果GetAllNews()使用消息服務:
public JsonResult GetAllNews()
{
return null;
}
作爲一個附註,爲什麼你認爲這是一個有用的測試? – bzlm 2010-12-13 13:56:46
@bzim:我是初學者,還在學習。我並不總是清楚要測試什麼和不該做什麼。 – 2010-12-13 13:58:16