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

这次我们来重构我们的测试用例。 
Java代码  收藏代码
  1. require File.dirname(__FILE__) + '/../test_helper'     
  2.     
  3. class UserTest < Test::Unit::TestCase     
  4.   fixtures :users     
  5.     
  6.   def test_full_name_without_middle_initial     
  7.     user = User.new(:first_name => 'John', :last_name => 'Doe')     
  8.     assert_equal 'John Doe', user.full_name     
  9.   end     
  10.     
  11.   def test_full_name_with_middle_initial     
  12.     user = User.new(:first_name => 'John', :middle_initial => 'H', :last_name => 'Doe')     
  13.     assert_equal 'John H. Doe', user.full_name     
  14.   end     
  15.     
  16.   def test_full_name_with_blank_middle_initial     
  17.     user = User.new(:first_name => 'John', :middle_initial => '', :last_name => 'Doe')     
  18.     assert_equal 'John Doe', user.full_name     
  19.   end     
  20. end     

看起来太复杂了是吗?重构! 
Java代码  收藏代码
  1. require File.dirname(__FILE__) + '/../test_helper'     
  2.     
  3. class UserTest < Test::Unit::TestCase     
  4.   fixtures :users     
  5.     
  6.   def test_full_name  
  7.     assert_equal 'John Doe', full_name('John', nil, 'Doe'), "nil middle initial"  
  8.     assert_equal 'John H. Doe', full_name('John''H''Doe'), "H middle initial"  
  9.     assert_equal 'John Doe', full_name('John''''Doe'), "blank middle initial"  
  10.   end  
  11.   
  12.   def full_name(first, middle, last)  
  13.     User.new(:first_name => first, :middile_initial => middle, :last_name => last).full_name  
  14.   end  
  15. end  

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

但有人投出了反对票,不赞成在一个测试方法里有多个assertion,而应该per方法per assertion。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章