2011-03-27 91 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