Ruby on rails 在规范中使用descripe/it优于功能/场景?(除了语法糖)
Ruby 1.9.3、Rails 3.1.10、RSpec 2.13.0、Capybara 2.2.1 我正在为Rails 3应用程序编写测试——一个供客户(和管理员)配置各种手机设置的GUI。我已经写了6个左右的规范文件,还有很多以前写过的文件(我用它们作为模板)。下面是规范文件的快照Ruby on rails 在规范中使用descripe/it优于功能/场景?(除了语法糖),ruby-on-rails,ruby,rspec,testng,acceptance-testing,Ruby On Rails,Ruby,Rspec,Testng,Acceptance Testing,Ruby 1.9.3、Rails 3.1.10、RSpec 2.13.0、Capybara 2.2.1 我正在为Rails 3应用程序编写测试——一个供客户(和管理员)配置各种手机设置的GUI。我已经写了6个左右的规范文件,还有很多以前写过的文件(我用它们作为模板)。下面是规范文件的快照 # spec/features/admin/administrators_spec.rb require 'spec_helper' include AdministratorHelper include He
# spec/features/admin/administrators_spec.rb
require 'spec_helper'
include AdministratorHelper
include Helpers
feature "Exercise Administrators page"
include_context "shared admin context"
background do
visit administrators_path
end
scenario "show index page" do
title.should == "Administrators"
end
# ... other happy path tests
# SAD PATH TESTS #
scenario "validation: delete no administrators", js:true do
click_button "Delete"
page.driver.accept_js_confirms!
error_message("Error: You did not select any administrators for deletion.")
end
end
据我所知,功能
/场景
是水豚独有的。。。和验收测试。其他合作者说,我们的“验收测试”测试一切——数据库是否保存了条目,视图是否正确呈现,等等。每个规范都与GUI中的一个页面相关联,而不是通过模型/控制器
他让我上了一门关于edX(CS169.1x)的课程,他们以不同的方式教授测试——每个型号和控制器都有单独的规范文件。他们还使用了descripe
/context
/it
编写测试的方法
description
/it
编写测试比使用功能
/场景
有什么好处吗?(除了语法糖)功能
/场景
,它会降低测试套件的速度吗?(与使用RSpec的关键字相比)谢谢您的帮助和澄清。我认为这个问题有点宽泛,但可以根据我的经验提出一些建议和意见来回答
我怀疑使用特定测试框架的关键字将产生最小的影响。但是,使用Capybara通过web界面对应用程序进行验收测试要比运行单个模块的低级单元测试慢得多
测试的速度可以变化几个数量级。对于快速模块周围的紧密单元测试,我可能希望每秒运行100个示例。在一个web开发项目中,我通常在单元测试中每秒运行10-20个示例,但在验收测试中可能每秒运行1个示例(这大概是您在这里得到的大概值)。当在站点的托管副本上通过浏览器驱动程序使用Capybara时,我可能希望在10秒内运行一个示例,因此一个包含100多个测试的套件必须仅针对关键路径测试运行,例如与候选版本的对比。这是一个经过深思熟虑的问题,但它有点宽泛,也要取决于意见。测试类型的定义有点模糊。我试图重新表述我的问题。我希望它不那么主观。我的理由是,可能因为水豚是RSpec之上的一个库,所以处理它需要更长的时间。(不知道还要多长时间……我们目前15分钟就有535个示例)非常感谢!你的回答比我想象的要深刻得多。我现在只在Rails方面工作了3个月,所以一些概念对我来说还是新的。我信任其他合作者,因为我们确实测试了应用程序的所有方面。。。我问这个问题的主要原因是因为在WebMock的研究过程中,所有的RSpec测试都遵循了descripe/it,这让我觉得有更大的区别。。。再次感谢你