继续重构。
我们先来写User类的单元测试,定义3个测试方法:
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
我们再看看我们的full_name方法,显然是无法满足所有的测试的:
class User < ActiveRecord::Base
def full_name
name = first_name
name += "#{middle_initial}." unless middle_initial.nil?
name += last_name
name
end
end
而且middle_initial后面跟一个"."也让我们的代码"风水"不好,比如我们突然有一天把"."改成"-"呢?好,我们继续重构吧:
class User < ActiveRecord::Base
def full_name
[first_name, middle_initial_with_period, last_name].compact.join(' ')
end
def middle_initial_with_period
"#{middle_initial}." unless middle_initial.blank?
end
end
运行测试,ok,通过了!
分享到:
相关推荐
world wide web万维网英文课件:ch15-Introduction to Rails.ppt
Rails Docker示例该应用程序的Docker设置... 要仅重新启动应用服务器,请运行以下命令: docker-compose restart restarone_app 一次性运行测试套件: docker-compose run --rm restarone_test rails test:full_suite
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
Rails::Rail::In rails-rail-in 用于查找印度铁路信息,例如火车列表、车站列表、路线、票价、PNR 状态、座位可用性等。 安装 要使用 Bundler 安装,请获取最新的稳定版本: gem 'rails-rail-in' , '~> 1.0.0' ...
### 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 ...
安装在Gemfile中: gem 'rails-uploader'在航线上: mount Uploader :: Engine => '/uploader' 迁移ActiveRecord: $ bundle exec rails g uploader:install用法存储上传文件的架构(cancan集成): class Asset <...
- 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器和视图。 - 在浏览器中查看结果。 #### 六、Rails的路由 - **概念介绍**: 路由是连接用户请求URL与应用...
### 重构你的Rails程式码 在进行Rails版本升级时,重构代码是一个绝佳的机会。本文将深入探讨为何这是个好时机来进行重构,并提供一系列实用的方法帮助您优化代码。 #### 为什么这是一个好时机重构代码? 1. **...
自述文件 此应用程序仅使用prometheus-client gem来显示路由/metrics下与流量相关的/metrics 。 信息 根据,我们实际需要的是: Gemfile gem 'prometheus-client' ...docker build -t igiannoulas/rails-w
X :: Editable :: Rails X可编辑的Rails 现场演示 结帐直播演示 安装 将此行添加到您的应用程序的Gemfile中: gem 'x-editable-rails' 然后执行: $ bundle 或自己安装为: $ gem install x-editable-rails 用法...
创建一个名为 blog 的新 Rails 应用程序。 rails new blog 编辑您的 Gemfile 并添加 gem 'rails-backbone' 安装 gem 并生成脚手架。 bundle install rails g backbone:install rails g scaffold Post title:...
博客docker-on-rails 制作博客以了解ruby的好处并通过docker使其对云友好 基于的项目, :rocket: 环境设定 克隆此项目: git clone https://github.com/LuisCusihuaman/docker-on-rails.git 复制默认环境变量: ...
在一个较大的项目中,这使编译速度提高了4倍: # Using sassc-rails[1] pry(main)> Benchmark.bm { |bm| bm.report { Rails.application.assets["application.css"] } } user system total real 1.720000 0.170000 ...
didww-v3-rails-sample 这是一个简单的Rails应用程序,演示了 gem集成。 有关获取DIDWW API密钥的详细信息,请访问 看到它在上实时运行或本地运行确保已安装 , 和 。 git clone git@github....
Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它成为构建现代API的理想选择之一。 ### 一、什么是RESTful API REST(Representational State Transfer)是一种软件架构风格,用于定义...