跨越边界: 在集成框架中进行测试,第1部分 - 编程入门网
assert true
end
def test_new
trails = Trail.find_all
Trail.new do |trail|
trail.name = "Barton Creek"
trail.description = "A little water in the Spring. You''ll get wet."
trail.difficulty = "medium"
trail.save
end
bc = Trail.find_by_name("Barton Creek")
assert_equal "medium", bc.difficulty
assert_equal trails.size + 1, Trail.find_all.size
end
跨越边界: 在集成框架中进行测试,第1部分(5)时间:2011-07-25 IBM Bruce Tate这个代码惊人的紧凑。只需要键入上述代码以及两个断言,就可以操纵持久模型。这种经济的投入正 是脚本语言在其他环境中如此流行的原因。测试也是需要经济投入的地方。 现在可以运行测试用例,您将看到两个新断言显示在测试报告中。使用 Ruby 时,只需保存并编译测 试即可。清单 12 显示了测试运行的结果: 清单 12. 测试结果
Fixture 和回滚 有三个问题影响了对数据库支持代码的测试。它们都与两个特性有关:性能和重复性。与内存中的操 作相比较,数据库调用的性能是非常低的。如果测试运行需要太长时间,那么您可能就不想运行它们了。 另一个问题是一个测试用例对另一个测试用例的影响。因为数据库调用在性质上是持续的,所以要把一个 测试在数据库中的变化与另一个数据库中的隔离开。最后的问题是前两个问题的组合。为了让数据库测试 用例可重复而增加设置和拆卸的负担时(为每个新的测试用例添加记录、运行测试并删除这些记录),带 来的开销可能是让人无法接受的。与这种开销相比,测试用例开销简直是小巫见大巫。 Ruby on Rails 用 fixture 和事务回滚来帮助解决这些问题。在 Rails 中,一个 fixture 就是一个 包含测试用例数据的文件。在创建这个简单应用程序时,同时还创建了一个开发数据库和一个测试数据库 。创建开发数据库是很正常的;但是您可能不想让生产代码和开发环境共享同一个数据库。而创建测试数 据库因为另一个原因也很重要。每个测试都在测试用例开始时装入 fixture 中的测试数据。然后,测试 用例对数据库进行修改,并测试这些修改的结果。最后,Rails 回滚这些变化,将数据库返回到测试方法 运行之前的状态。 现在要制作一个测试 fixture 并为它编写一个测试。请编辑 test/fixtures/trails.yml 文件,添加 一个记录,如清单 13 所示: 清单 13. 添加记录
清单 13 使用叫做 YAML 的语言,这个语言描述结构化的数据(请参阅 参考资料)。此文件对空格很 敏感,所以该当用空格代替制表符并完全按原样键入数据项时,请确保删除了所有尾部空格。 同样,还要把这个测试用例添加到 trails_test.rb 中:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |