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。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章