Есть ли способ изменить константу RUBY_PLATFORM, чтобы я мог протестировать следующий метод с RSpec2?
def determine_os
case RUBY_PLATFORM
when /darwin/ then :mac
when /linux/ then :linux
else raise InvalidOSError
end
end
Есть ли способ изменить константу RUBY_PLATFORM, чтобы я мог протестировать следующий метод с RSpec2?
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")
для своего теста.
RbConfig['host_os']
кажется лучшим способом доступа к этой информации. Я также обнаружил, что предложенное вами изменение #determine_os
значительно облегчило тестирование. Аналогичным образом я скорректировал несколько других методов.
- person ezkl; 29.03.2011
Просто установите его. (будет генерировать предупреждения, игнорируйте их)
RUBY_PLATFORM = "darwin"
determine_os #=> :mac
RUBY_PLATFORM = "mingw"
determine_os #=> raises InvalidOSError