4

我正在尝试编写一些涉及Roo读取 Excel 2007 文件的单元测试。我的单元测试文件中有 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 实例用作文件?

4

1 回答 1

1

看起来这个版本的 roo 支持这个。它不是显式检查它是否是 File 类,而是根据它是否响应#seek. 相关代码在这里这里

于 2015-10-02T05:43:14.223 回答