2008-04-09
#011_重构用户名 PART2
关键字: rails 重构
接着010里面的例子,让我们先写User类的单元测试吧
运行测试,很遗憾,第3个测试用例没能通过。
虽然很好改,但我们决定继续重构一下
因为加上了blank?这个方法,因此测试通过。
另外一个考虑是first_name与last_name是否为空,其实我真不是很懂。。
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
运行测试,很遗憾,第3个测试用例没能通过。
class User < ActiveRecord::Base
def full_name
name = first_name + " "
name += "#{middle_initial}. " unless middle_initial.nil?
name += last_name
name
end
end
虽然很好改,但我们决定继续重构一下
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
因为加上了blank?这个方法,因此测试通过。
另外一个考虑是first_name与last_name是否为空,其实我真不是很懂。。
[first_name, middle_initial_with_period, last_name].reject{ |i| i.blank? }.compact.join(' ')
[first_name, middle_initial_with_period, last_name].reject(&:blank?) * ' '
- 14:34
- 浏览 (90)
- 评论 (0)
- 分类: Railscasts学习笔记
- 相关推荐
发表评论
- 浏览: 4740 次
- 性别:

- 来自: 南京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
render与redirect_to的区 ...
redirect_to会执行被渲染的那个action,而render不会,这跟你 ...
-- by alanyuqiang -
#008_layouts和content_fo ...
这是最普遍的用法,不知道楼主有没研究过,content_for,yield在不同 ...
-- by alanyuqiang -
#008_layouts和content_fo ...
...
-- by alanyuqiang -
render与redirect_to的区 ...
不错,最近正为这个发愁呢!
-- by evil850209 -
如何在update一条记录的部 ...
theone 写道wiisola 写道theone 写道update_all [ ...
-- by wiisola






评论排行榜