`
hideto
  • 浏览: 2679071 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rails宝典之第十二式: 重构用户名-p3

    博客分类:
  • Ruby
阅读更多
这次我们来重构我们的测试用例。
require File.dirname(__FILE__) + '/../test_helper'   
  
class UserTest < Test::Unit::TestCase   
  fixtures :users   
  
  def test_full_name_without_middle_initial   
    user = User.new(:first_name => 'John', :last_name => 'Doe')   
    assert_equal 'John Doe', user.full_name   
  end   
  
  def test_full_name_with_middle_initial   
    user = User.new(:first_name => 'John', :middle_initial => 'H', :last_name => 'Doe')   
    assert_equal 'John H. Doe', user.full_name   
  end   
  
  def test_full_name_with_blank_middle_initial   
    user = User.new(:first_name => 'John', :middle_initial => '', :last_name => 'Doe')   
    assert_equal 'John Doe', user.full_name   
  end   
end   

看起来太复杂了是吗?重构!
require File.dirname(__FILE__) + '/../test_helper'   
  
class UserTest < Test::Unit::TestCase   
  fixtures :users   
  
  def test_full_name
    assert_equal 'John Doe', full_name('John', nil, 'Doe'), "nil middle initial"
    assert_equal 'John H. Doe', full_name('John', 'H', 'Doe'), "H middle initial"
    assert_equal 'John Doe', full_name('John', '', 'Doe'), "blank middle initial"
  end

  def full_name(first, middle, last)
    User.new(:first_name => first, :middile_initial => middle, :last_name => last).full_name
  end
end

上面的代码将3个测试方法重构为一个,然后在assert语句末尾加上字符串来标识具体测试类型,full_name被提取出来,代码清晰多了。

但有人投出了反对票,不赞成在一个测试方法里有多个assertion,而应该per方法per assertion。
分享到:
评论

相关推荐

    world wide web万维网英文课件:ch15-Introduction to Rails.ppt

    world wide web万维网英文课件:ch15-Introduction to Rails.ppt

    rails-react-test:使用react-rails和docker测试Rails应用程序

    Rails Docker示例该应用程序的Docker设置来自以下: :入门要开始运行: docker-compose build 然后运行: docker-compose up 要连接到正在运行的应用程序容器,请运行: docker exec -it restarone_app /bin/sh 可以...

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...

    rails-rail-in:rails-rail-in 用于查找印度铁路信息,例如火车列表、车站列表、路线、票价、PNR 状态、座位可用性等

    Rails::Rail::In rails-rail-in 用于查找印度铁路信息,例如火车列表、车站列表、路线、票价、PNR 状态、座位可用性等。 安装 要使用 Bundler 安装,请获取最新的稳定版本: gem 'rails-rail-in' , '~&gt; 1.0.0' ...

    Agile Web Development with Rails Final

    ### Agile Web Development with Rails Final: Key IT Knowledge Points #### Introduction: Ruby on Rails Framework Ruby on Rails (often shortened as Rails) is a server-side web application framework ...

    rails-uploader:用jQuery-File-Upload实现Rails文件上传

    安装在Gemfile中: gem 'rails-uploader'在航线上: mount Uploader :: Engine =&gt; '/uploader' 迁移ActiveRecord: $ bundle exec rails g uploader:install用法存储上传文件的架构(cancan集成): class Asset &lt...

    Rails 101 入门电子书

    - 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器和视图。 - 在浏览器中查看结果。 #### 六、Rails的路由 - **概念介绍**: 路由是连接用户请求URL与应用...

    重构你的Rails程式码

    ### 重构你的Rails程式码 在进行Rails版本升级时,重构代码是一个绝佳的机会。本文将深入探讨为何这是个好时机来进行重构,并提供一系列实用的方法帮助您优化代码。 #### 为什么这是一个好时机重构代码? 1. **...

    Simply Rails 2 2nd Edition (2008)

    ##### 第12章:部署与生产使用 - **主要内容**:指导如何将Rails应用部署至生产环境,包括服务器选择、配置优化、监控维护等方面。 - **学习目标**:具备将应用部署上线的能力,并能进行日常运维工作。 通过以上...

    rails-with-prometheus-metrics:使用prometheus-client gem的基本Rails应用程序

    自述文件 此应用程序仅使用prometheus-client gem来显示路由/metrics下与流量相关的/metrics 。 信息 根据,我们实际需要的是: Gemfile gem 'prometheus-client' ...docker build -t igiannoulas/rails-w

    x-editable-rails:使用X-Editable帮助器轻松编辑字段

    X :: Editable :: Rails X可编辑的Rails 现场演示 结帐直播演示 安装 将此行添加到您的应用程序的Gemfile中: gem 'x-editable-rails' 然后执行: $ bundle 或自己安装为: $ gem install x-editable-rails 用法...

    backbone-rails-demo:演示 rails-backbone gem 用法的示例应用程序

    创建一个名为 blog 的新 Rails 应用程序。 rails new blog 编辑您的 Gemfile 并添加 gem 'rails-backbone' 安装 gem 并生成脚手架。 bundle install rails g backbone:install rails g scaffold Post title:...

    docker-on-rails:博客docker-on-rails

    博客docker-on-rails 制作博客以了解ruby的好处并通过docker使其对云友好 基于的项目, :rocket: 环境设定 克隆此项目: git clone https://github.com/LuisCusihuaman/docker-on-rails.git 复制默认环境变量: ...

    sassc-rails:将SassC-Ruby与Rails集成!

    SassC :: Rails 我们都喜欢使用Sass,但是对于较大的代码库,编译可能需要很长时间。 该gem将Sass的C实现集成到资产管道中。 在一个较大的项目中,这使编译速度提高了4倍: # Using sassc-rails[1] pry(main)&gt; ...

    rails22cn.pdf

    - **《The Ruby Way: Solutions and Techniques in Ruby Programming》第二版** - **作者**:Hal Fulton - **ISBN**:9780672328848 - **出版年份**:2007 - **内容概述**:这本书深入介绍了 Ruby 编程语言的...

    didww-v3-rails-sample:Rails didww-v3 gem集成示例

    didww-v3-rails-sample 这是一个简单的Rails应用程序,演示了 gem集成。 有关获取DIDWW API密钥的详细信息,请访问 看到它在上实时运行或本地运行确保已安装 , 和 。 git clone git@github....

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

Global site tag (gtag.js) - Google Analytics