有沒有辦法更改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
有沒有辦法更改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
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")
。
設置它。 (會產生警告,忽略它們)
RUBY_PLATFORM = "darwin"
determine_os #=> :mac
RUBY_PLATFORM = "mingw"
determine_os #=> raises InvalidOSError
哈哈。謝謝。這是我嘗試的第一件事,但我的測試還存在另一個問題,我認爲這與測試警告有關。 – 2011-03-27 02:12:01
This blog post有辦法存根常數和抑制警告。
謝謝,@AndrewGrimm! 'RbConfig ['host_os']'似乎是訪問這些信息的最佳方法。我還發現,你提出的對'#definition_os'的更改使測試變得更容易。我以類似的方式調整了其他一些方法。 – 2011-03-29 04:24:26