2011-03-27 120 views
2

有沒有辦法更改RUBY_PLATFORM常量,以便我可以測試以下方法w/RSpec2?使用RSpec 2測試RUBY_PLATFORM

def determine_os 
    case RUBY_PLATFORM 
    when /darwin/ then :mac 
    when /linux/ then :linux 
    else raise InvalidOSError 
    end 
end 

回答

4

RUBY_PLATFORM不應該用於確定操作系統。改爲使用散列RbConfig中的適當項目。

另外,如果你想讓它更易於測試,你可以做

def determine_os(os_string) 
    case os_string 
    when /darwin/ then :mac 
    when /linux/ then :linux 
    else raise InvalidOSError 
    end 
end 

,你可以爲你的測試做determine_os("darwin")

+1

謝謝,@AndrewGrimm! 'RbConfig ['host_os']'似乎是訪問這些信息的最佳方法。我還發現,你提出的對'#definition_os'的更改使測試變得更容易。我以類似的方式調整了其他一些方法。 – 2011-03-29 04:24:26

1

設置它。 (會產生警告,忽略它們)

RUBY_PLATFORM = "darwin" 
determine_os    #=> :mac 
RUBY_PLATFORM = "mingw" 
determine_os    #=> raises InvalidOSError 
+0

哈哈。謝謝。這是我嘗試的第一件事,但我的測試還存在另一個問題,我認爲這與測試警告有關。 – 2011-03-27 02:12:01