Rooが Excel 2007 ファイルを読み取ることを含むいくつかの単体テストを作成しようとしています。単体テスト ファイルに 16 進文字列として Excel ファイルがあり、それが StringIO インスタンスに渡されます。StringIO オブジェクトを単純に に渡すことはできません。その関数は、渡されたオブジェクトがインスタンスRoo::Spreadsheet.open
であるかどうかを実際にチェックするためです。File
def open(file, options = {})
file = File === file ? file.path : file
# ...
そうでない場合は、文字列であると仮定します。拡張子を手動で指定しても役に立ちません。
doc = Roo::Spreadsheet.open(file, extension: :xlsx)
Roo に StringIO インスタンスをファイルとして使用させる賢い方法はありますか?