Ruby on rails 为了测试我的RubyonRails应用程序,您有什么建议?

Ruby on rails 为了测试我的RubyonRails应用程序,您有什么建议?,ruby-on-rails,ruby,ruby-on-rails-3,testing,tdd,Ruby On Rails,Ruby,Ruby On Rails 3,Testing,Tdd,我正在使用RubyonRails 3.0.10,我计划尽快切换到Versiononi 3.1。有了新的RoR版本,我还计划在我的应用程序中添加自动测试 为了测试我的应用程序,您有什么建议? 您是否建议阅读一些书籍和/或使用一些软件 如果我开始为RoR 3.0.10编写测试,这些测试在RoR 3.1中是否可用并兼容 简单地说,我想知道我可以、应该和“必须”使用哪些测试来改进我的应用程序(也可以测试jQuery JavaScript代码)。首先,测试必须在编写代码之前进行 我建议通过测试覆盖您的应用

我正在使用RubyonRails 3.0.10,我计划尽快切换到Versiononi 3.1。有了新的RoR版本,我还计划在我的应用程序中添加自动测试

  • 为了测试我的应用程序,您有什么建议?
  • 您是否建议阅读一些书籍和/或使用一些软件
  • 如果我开始为RoR 3.0.10编写测试,这些测试在RoR 3.1中是否可用并兼容

  • 简单地说,我想知道我可以、应该和“必须”使用哪些测试来改进我的应用程序(也可以测试jQuery JavaScript代码)。

    首先,测试必须在编写代码之前进行

    我建议通过测试覆盖您的应用程序,然后在您的情况下切换到Rails 3.1

    我更喜欢使用和在一起。
    这是两种不同的测试方法(rspec)和(Cumber)

    你说的自动化测试是什么意思

    如果您指的是单元/功能/集成测试,那么您应该在升级到Rails 3.1之前准备好这些测试。它们将非常有助于发现升级过程中出现故障的地方,当它们全部通过时,您可以对应用程序再次工作有一定程度的信心

    如果说自动化测试,您指的是更高级别的测试,比如UI测试(我将其解释为),我建议使用或。像这样的测试应该仍然有效,并且不会受到底层实现的影响(无论是Rails 3.0.10还是3.1)。只要应用程序仍然有效,这些测试就仍然有效

  • 使用
  • 使用
  • 使用
  • 使用
  • Guard+Spork(+Rspec+Capybara)=自动测试

    我不推荐用黄瓜。每个人都喜欢黄瓜,但它的工作比它的价值多得多。它是一个正则表达式层,位于Rspec+Capybara之上(它是一个单独的gem,现在包含在Rspec中)

    当您构建应用程序时,我建议您:

  • 在概念化模型时,编写Rspec模型测试描述。类似于
    它“应该保存一个:开始日期”
    。首先,通过编写属性测试来构建模型(它接受的属性值、如何处理无效值等)。然后根据需要,编写模型之间的集成测试。它们是模型测试,不是单元测试。当您为模型属性编写测试时,这些是单元测试(独立类测试)。当您在测试模型之间的功能时(当我执行
    user.posts.create(:title=>“我的第一篇博客文章”)
    时,我希望为该用户创建一篇文章),我认为这些是“集成”测试。在Rspec中,这些是“模型”测试
  • 在中获得模型的一些基础知识后,编写视图测试。为了在视图测试中实现断言,需要设置Spork、Guard和Capybara。然后你需要写你的Haml…然后你的控制器代码…最后,你要写代码让视图测试通过。同时进行控制器和视图测试的想法太过分了。使用Rspec+Capybara验收测试,您可以将所有内容包装到
    spec/acceptance
    目录中。节省您的时间和大量的思考。最后,您彻底地测试了您的模型,并彻底地测试了请求/html
  • 随着你的应用程序越来越大,测试将需要更长的时间运行。运行所有测试可能需要10-20分钟!这会很快让你感到厌烦,尤其是如果你只想在重新推之前纠正一个打字错误的话。要避免这种情况,请找出使用种子数据(在每次测试之间不需要重新创建的数据)的聪明方法,或者找到使用模拟数据的聪明方法,然后设置Spork。通过在测试运行之间不必重新加载Rails服务器,可以节省大量时间。使用Guard+Spork,您不需要自动测试(自动测试已经过时)
  • 如果您想更进一步,那么可以测试您的javascript。这仍然是一个非常新的领域。目前有两种方法,1)使用带javascript的驱动程序的Capybara(selenium是本篇文章中唯一真正起作用的驱动程序),或2)使用。如果你的应用程序不是一个“纯javascript”的应用程序,我会等这个
  • 对于Javascript测试,我认为构建允许您在Mac和Windows上对Rails+Spork测试服务器本地运行jasmine测试(通过Parallels或VMWare Fusion或其他方式)是进行view+Javascript测试的一种更好的方法,因为您可以在实际生产中获得整个应用程序


    到目前为止,构建一个可靠的Rails应用程序只需要这些。希望这能有所帮助,Lance。

    我也使用rspec,但我要指出的是,虽然测试应该在您编写实际代码之前(在测试驱动开发之后)编写,但它们不一定非得如此。做前者是最容易的,但事后测试总比根本不做测试好。@Benjamin Kreeger的观点是错误的,因为你不能确定自己写的测试是正确的。如果您遵循TDD链接,您将看到它应该是怎样的。你的方法不是TDDI,实际上只是指出了遵循TDD和不遵循TDD之间的区别。写作测试≠ TDD。