我有一个名为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