TDD:测试MVC应用程序

4

我已经开始使用TDD和PHPUnit从头编写一个新的应用程序,它将是一个MVC应用程序。 我从Model开始编写测试,这很有趣,没有遇到太多问题。

现在我想创建我的视图/模型。 但问题是:我如何测试我的控制器? 视图怎么样? 我的控制器将使用我的已测试过的模型和未来的视图。

谢谢。

2个回答

6
针对MVC架构的每一层,需要进行三种不同类型的测试。模型层需要进行单元测试,控制器层需要进行功能测试,视图层需要进行UI测试。
编写单元测试是最简单的。在时间和依赖关系方面都很便宜,也不需要太多的模拟。
另一方面,功能测试相对于单元测试要花费更多的成本。在某种情况下,如果您已经用单元测试覆盖了应用程序中的模型部分,则可以在功能测试部分稍微放松一下。但是,您仍然应该拥有良好的代码覆盖率-100%才是理想的控制器方法。
最后是UI测试,这是所有测试中花费最高的。您可能需要使用Selenium来进行基于浏览器的测试,并尝试使用您的语言自动化。您可能需要在后台运行一个RC服务器才能实现此目的。但是请相信我,如果您先覆盖前两个部分-单元和功能,则这可选可不选。
建议设置CI-持续集成设置,并使用代码覆盖度工具,以便通过测试获得代码覆盖度百分比趋势。

2
当你在运行测试时,应该只使用被测试的类。其他对象应该被替换为模拟或者其他虚拟结构。
你这样做是因为(例如),当你为控制器操作编写测试时,你需要为该操作提供一些值,然后检查是否将正确的数据传递给视图和模型。
这是你应该避免在代码中使用全局状态(以静态调用或全局变量的形式)的原因之一。
以下是一些你可能会发现有用的链接:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接