- 浏览: 2075603 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
在http://giantrobots.thoughtbot.com逛的时候看到的,小夜觉得有些东西还是能说明问题的,就抄回来了。
Productivity and happiness.这是Ruby和Rails升起的原因,也是integration testing能够持续变化的原因。当然,原文作者客气的说,这只是个人理解并没有科学证据。
2006
使用如下方法
2007
RSpec引入所谓行为驱动,就是故事模式如下:
Webrat在这个时候模拟浏览器行为用于测试网页。 DSL通过
Webrat可以和 配合使用Nokogiri测试网页,使用XPath 和 CSS selectors来验证HTML的返回。
通常这样写:
2008
Merb推荐使用request方法。而这也比dispatch_to更容易。通常会用到
这时Cucumber取代讲故事的Story Runner模式。如下:
2009
Integration testing 成为主流
Rack::Test通过给测试框架提供一个公用的接口来和Rack应用交互。
示例如下:
Cucumber and Webrat 也得到发展
Coulda同样使用定义语言通过Webrat或者其他库来模拟浏览器行为如下:
Given同样
原文还有一些解释,没太注意,然而,从这样一个Rails的测试进化过程,还是能够看到一些东西。
Productivity and happiness.这是Ruby和Rails升起的原因,也是integration testing能够持续变化的原因。当然,原文作者客气的说,这只是个人理解并没有科学证据。
2006
使用如下方法
引用
get, post, follow_redirect!, xml_http_request, status, path, and open_session
通过assert_equal来验证。通常写法如下:
class ExampleTest < ActionController::IntegrationTest def test_login get "/login" assert_equal 200, status post "/login", :username => people(:jamis).username, :password => people(:jamis).password follow_redirect! assert_equal 200, status assert_equal "/home", path end end
2007
RSpec引入所谓行为驱动,就是故事模式如下:
Scenario "Root user" do Given "a user named", "admin" And "a company named", "Company1" And "a company named", "Company2" And "the user has the role", "root" do |role| @user.update_attribute :role, role end And "logged in as", "admin" When "visiting", "/" Then "viewer should see", "main/root_home" And "page should show company named", "Company1" do |name| response.should have_text(/#{name}/) end And "page should show company named", "Company2" end
Webrat在这个时候模拟浏览器行为用于测试网页。 DSL通过
引用
click_link, fill_in, and click_button
Webrat可以和 配合使用Nokogiri测试网页,使用XPath 和 CSS selectors来验证HTML的返回。
通常这样写:
def test_sign_up visits "/" clicks_link "Sign up" fills_in "Email", :with => "good@example.com" select "Free account" clicks_button "Register" ... end
2008
Merb推荐使用request方法。而这也比dispatch_to更容易。通常会用到
引用
be_successful and redirect_to
这时Cucumber取代讲故事的Story Runner模式。如下:
Feature: Addition In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 2 into the calculator And I have entered 2 into the calculator When I press add Then the result should be 4 on the screen
Given /^I signed up with "(.*)\/(.*)"$/ do |email, password| user = Factory :user, :email => email, :password => password, :password_confirmation => password end
2009
Integration testing 成为主流
Rack::Test通过给测试框架提供一个公用的接口来和Rack应用交互。
引用
Rack::Test pays homage to the frameworks before it, using methods that match the HTTP verbs: get, post, put, and delete, head) and adding request (Merb) and follow_redirect! (Rails). It also handles HTTP authentication and stores requests and responses in last_request and last_response.
示例如下:
class HelloWorldTest < Test::Unit::TestCase include Rack::Test::Methods def app [color=red]Sinatra[/color]::Application end def test_it_says_hello_world get '/' assert last_response.ok? assert_equal 'Hello World', last_response.body end def test_it_says_hello_to_a_person get '/', :name => 'Simon' assert last_response.body.include?('Simon') end end
Cucumber and Webrat 也得到发展
Feature "A Tomatoist does a pomodoro" do Story <<-eos In order to perform a focused unit of work As a Tomatoist I want to start a pomodoro eos Scenario "Starting a pomodoro" do When "I go to the home page" do executes { visit '/' } Then "I should be sent to a new session" do current_url.should =~ /\/\w{3,}/ end And "I should see an unstarted timer" do response.should have_tag('#timer .countdown_row','00:00') end When "I click the pomodoro button" do executes do @session_url = current_url click_button 'Pomodoro' end Then "I should be on my session's page" do current_url.should == @session_url end And "my timer history should show the current pomdoro" do response.should have_tag('#history ul li', /Pomodoro/, 1) end end end end end
Coulda同样使用定义语言通过Webrat或者其他库来模拟浏览器行为如下:
Feature "Painfully obvious" do in_order_to "demonstrate a simple test" as_a "coulda developer" i_want_to "provide a straight-forward scenario" Scenario "Describing something obvious" do Given "something without a value" do @no_value = nil end When "I give it a value" do @no_value = true end Then "it should have a value" do assert(@no_value) end end end
Given同样
class StackBehavior < Given::TestCase Invariant { expect(@stack.depth) >= 0 } Invariant { expect(@stack.empty?) == (@stack.depth == 0) } def empty_stack @stack = Stack.new end Given(:empty_stack) do Then { expect(@stack.depth) == 0 } When { @stack.push(:an_item) } Then { expect(@stack.depth) == 1 } Then { expect(@stack.top) == :an_item } When { @stack.pop } FailsWith(Stack::UsageError) Then { expect(exception.message) =~ /empty/ } end end
引用
I write about 50 lines of horrible hacks. It brings the Given/When/Then DSL to Test::Unit. It relies on Webrat and Rack::Test to simulate the browser and theoretically work for all Rack apps (only tested on Sinatra). I keep the nesting totally flat, as is my style. It looks like this:
Feature 'Shorten URL' do Given 'I am on the homepage' do visit '/' end When 'I submit http://example.com' do fill_in 'url', :with => 'http://example.com' click_button 'shorten' end Then 'I should see a short link' do assert_have_selector 'a#short' end When 'I follow the short link' do click_link 'short' end Then 'I should be on http://example.com' do assert_equal 'http://example.com', current_url end end
原文还有一些解释,没太注意,然而,从这样一个Rails的测试进化过程,还是能够看到一些东西。
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 935heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3259reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3295alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1472问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1386这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1349以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1908首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2277这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2267开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1241class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8147TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2024刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1492这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1946面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17216git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2737简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 946第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1697开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12959Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2122又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
这款工具的出现,极大地简化了API测试过程,提高了开发效率,尤其在进行RESTful API开发时,它的价值更为凸显。 首先,让我们深入了解Rails应用API。Rails是Ruby on Rails的简称,是一个开源的Web应用程序框架,...
将RSpec与Rails相结合可以有效地进行单元测试、集成测试以及端到端测试,从而确保应用程序的质量。 ##### 为什么使用RSpec? - **可读性高**:RSpec提供了清晰易懂的DSL(领域特定语言),使得测试代码更容易理解...
在软件开发中,测试是确保...通过本文的探讨,我们了解到了Rails中单元测试和功能测试的区别,以及如何利用Rails的测试工具来编写高质量的测试代码。掌握这些知识,将有助于开发者在Rails项目中实施有效的测试策略。
combustion, 简单,优雅的Rails 引擎测试 燃烧in是一个以简单有效的方式测试 Rails 引擎的库,而不是在规范或者测试文件夹中创建完整的Rails 应用。它允许你在引擎的上下文中编写你的规格,只使用你需要的Rails 应用...
该指南不仅覆盖了Rails内置的测试机制,还帮助读者理解Rails测试术语,撰写单元、功能和集成测试,并介绍了流行的测试方法和插件。它假设读者对Rails的基本操作方式有初步了解,但并不教如何编写一个Rails应用,而是...
Rails鼓励TDD(测试驱动开发),包括单元测试、集成测试和功能测试。RSpec、Capybara等库可以帮助编写和运行这些测试,确保代码质量。 这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手...
标题 "Rails 集成Open Flash Charts" 涉及的是在Ruby on Rails框架中集成Open Flash Chart这一图表库的技术细节。Open Flash Chart是一个开源的Flash图表生成器,它允许开发者通过简单的API创建各种复杂的图表,包括...
RSepc 是一款基于 Ruby 的行为驱动开发(BDD)测试框架,它被广泛应用于 Rails 应用程序的测试。RSpec 提供了一种清晰且简洁的方式来编写可读性强的测试代码,使得测试用例更像是对软件行为的规范描述,而不是简单的...
这一章节将教授如何使用Rails的测试框架进行单元测试、集成测试和功能测试。同时,也会介绍如何对应用进行基准测试,评估其性能表现。 #### 12. Deployment and Production Use(部署和生产使用) 最后,本书将...
Cucumber-Rails集成了Cucumber与Rails,使得开发者能够在Rails环境中方便地使用Cucumber进行功能测试。 在 Rails 应用中使用 Cucumber-Rails,开发者可以创建一个名为`features`的目录,里面包含这些Gherkin特性...
7. **Testing**:Rails强调测试驱动开发,内置了RSpec、Minitest等测试框架,支持单元测试、集成测试和功能测试,确保代码质量。 8. **Asset Pipeline**:Rails的资产管道处理JavaScript、CSS和图像等静态资源,...
adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成 AdminLTE Rails gem AdminLTE 是后端的高级 Bootstrap 主题。英镑 AdminLTE Rails gem 与 Rails 资产管道集成了英镑AdminLTE主题。安装将...
- 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器...
minitest-rails, Rails的Minitest集成 minitestRails 5的Minitest集成 安装gem install minitest-rails这将安装以下宝石:minitest配置创建一个新的Rail
通过深入分析不同测试方法(如单元测试、集成测试等)之间的优缺点,帮助读者理解何时以及为何应选择特定类型的测试。 2. **Mocking与Stubbing详解**:对于新接触测试驱动开发(TDD)的开发者来说,本书对Mocking和...
- 本书就是通过LeanPub出版过程发布的,体现了作者和出版者利用这种方法快速适应市场变化的能力。 9. 相关作品和本书结构: - 提到了与本书相关的其他作品,这些作品可能是对本书主题的扩展或者有更深的探讨。 -...
- **自动化测试**:利用工具如 RSpec 和 Capybara 自动化测试过程,不仅可以节省时间,还可以减少人为错误。 #### Rails 4 特定的测试技术和工具 - **RSpec**:RSpec 是一个行为驱动开发(BDD)框架,广泛应用于 ...
Rails强调测试驱动开发,内置了Test::Unit和RSpec两种测试框架,便于编写单元测试、集成测试和功能测试,确保代码的质量和稳定性。 **10. 国际化(i18n)** Rails 2.0提供i18n模块,支持多语言应用。通过配置文件,...
Rails集成了测试框架如RSpec和MiniTest,允许开发者编写单元测试、集成测试和功能测试,确保代码的稳定性和可靠性。 安全方面,Rails提供了许多安全特性,如CSRF(跨站请求伪造)防护、XSS(跨站脚本)防御、以及...
为了运行和测试应用,你需要在命令行中使用Rails服务器。在Aptana中,可以使用内置的终端工具。打开“Terminal”视图,输入`rails server`启动服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 在...