技术开发 频道

基于MVC框架开发Web论坛之测试篇

  八、 测试成功

  在你添加完前面几节中所有的相关的文件后,便会顺利通过ForumController的单元测试,测试成功的快照请参考图6。该测试验证Forum控制器的Index()动作的确是返回了数据库中所有的线程。注意,我们不需要实际地运行该应用程序去检查是否应用程序能够正确工作。单元测试能够提供给我们足够的安全保证。


                                                                              图6—顺利通过测试的快照

  当你开始编写单元测试时,你很快就会迷恋于它们,因为它们能够为你的代码提供一个安全的保证。单元测试能够使你在以后的任何时候更新你的代码而不必担心破坏现有代码。

  九、 最后的一点思考

  选择首先测试什么样的代码总是一个有争议的话题。我决定在第一个单元测试中首先测试论坛控制器中的Index()方法。我的目的是想验证一下我的确可以从数据库返回一个消息线程的列表。

  当然,其它也遵循测试驱动开发的开发者有可能首先想到测试该软件的其它一些方面。例如,有人可能争论:在为ForumController创建一个测试之前,首先创建一组针对ForumRepository的测试似乎更有意义。

  下面我说一下我是如何决定首先测试的内容的。我重点关注的是我希望我的应用程序完成什么任务。在本文论坛示例中,我关心的事实是:我想使这个论坛应用程序能够正确地返回消息。因此,我开始创建一个能够使我的应用程序满足这个要求的单元测试。本文中所创建的ForumRespository类和Message类正是必要的工具类,借助于它们便可以使Index()动作按既定方式正确工作。

  沿着这种思路,以后我进一步发现我可能需要为ForumRepository本身创建一个单元测试。如果我在ForumRepository类添加一些无法直接通过一个控制器动作暴露的功能,那么我必须先开始编写专门针对ForumRepository的单元测试。

  然而,现在我坚信我的论坛应用程序目前的确能够按照我的既定设计正确地工作。我的目标是使Index()动作返回消息线程,而我最终也实现了这个目标。

  十、 总结

  在本篇中,我们已经正式踏上了构建一个完美的MVC论坛应用程序的旅程。在接下来的下一篇中,我们将着重解决如何把新消息插入到数据库的问题。
 

1
相关文章