跨越边界: 在集成框架中进行测试,第2部分 - 编程入门网
actions
get "trails/list"
assert_response :success
post "trails/destroy/1"
assert_response :redirect
assert_nil(response.body =~ /Emma Long/)
assert_equal(2, Trail.find_all.size)
follow_redirect!
assert_response :success
get "trails/show/2"
assert_response :success
end
end
这个示例使用的集成框架与前面通过 Rails 控制台使用的框架相同,使用的断言模型也与功能测试和 单元测试框架的模型相同。可以用 rake 运行测试用例,也可以单独运行每个测试用例。通过以一致的方 式使用控制台和集成框架,可以尝试应用程序的各个方面,获得控制台中的结果,并用这些结果在自动测 试用例中提供您的断言。 在 Ruby 中测试与在 Java 语言中测试的对比 现在可以开始查看集成框架中的集成测试有什么不同了。对于这个示例,可以使用 fixture,它们在 集成测试框架中工作。断言和表示想法的方式(例如请求和响应)都有统一的形式。 基本 Ruby 语言中的某些功能让 Rails 的测试更强大。可以使用 Ruby 做类似 mock 和存根所做的事 。在编写这篇文章时,我正在使用 Rails 进行一些自动集成测试。我有一个依赖于当前日期的类。我只 是打开了用于 Date 的现有 Ruby 类,并重新定义了 today 方法,让它返回 Date.civil(2, 2, 2006), 如清单 10 所示: 清单 10. 用 Rails 创建存根
对于我的测试用例,我什么都不需要做。现在,不论测试用例什么时候运行,today 都会是美国的假 日土拔鼠日。只使用了五行代码,我就有了一个可工作的存根。在这个示例中,这个 mock 对象只能用于 测试用例。如果需要将这个 mock 对象用于多个测试用例,那么可以给这个 mock 对象添加测试和模拟的 代码,并重新使用它。 总之,我对 Ruby 的测试体验的评价是:非常必要(因为动态语言容易出错的特性),并且更强大。 其中部分力量来自通过 Rails 使得代码生成、断言、数据库支持,以及诊断工具无缝地在一起工作的集 成体验。 但是 Java 技术确实有自己的优势。在将测试集成到开发环境方面它做得更好,它还有更好的持续集 成工具。也可以找到模拟最常见企业特性的更多框架。Java 开发人员有另一个理论优势:他们可以在没 有数据库支持的情况下,更容易地运行应用程序。没有数据库支持就测试 Rails 应用程序几乎没有意义 ,因为许多 Rails 值是通过元编程(metaprogramming)把 SQL 特性编织起来而得到的。所以,Java 测 试套件通常运行得更快,因为套件中的测试用例不需要访问数据库。 如果使用 Java 代码生成,Rails 可以为您提供一些关于如何使用测试生成增强您的代码生成的好主 意。如果正在补充自己的测试框架,那么 Rails 的测试 API 既简单又漂亮。如果对超越 Java 编程语言 感兴趣,那么 Rails 可以为轻量级的、数据库支持的应用程序提供一些真正的价值。 在这个系列的下一篇文章中,我将不再介绍 Rails,而是查看基于 Web 的建模策略。您将看到如何将 代码生成用于动态语言。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |