你知道如何为从xlsx gem生成的xlsx文件编写视图规范吗?我不确定我一开始做得是否正确,但这是我目前所掌握的

RSpec.describe "spreadsheet.xlsx.axlsx", :type =>  :view do
    ...
    it "should have header Books" do
      assign(:spreadsheet, spreadsheet)
      render
      # rendered.rows[0].cells.map(&:value).should include "Books"
    end
end

在pry中,rendered是utf-8编码的字符串,我不知道如何解析头等。
=> "PK\u0003\u0004\u0014\u0000\u0000\u0000\b\u0000\u0000\u0000!\xECc8k\xD4\
有没有办法像测试html视图一样测试生成的xlsx文件?
有点像…
it "has header Books" do
  assign(:worksheet, worksheet)
  render
  expect(rendered).to have_xpath("(//table)[1]/thead/tr/td", :text => "Books")
end

提前谢谢!

最佳答案

它似乎是原始响应,因此您可以使用类似于请求规范的内容:

File.open('/tmp/xlsx_temp.xlsx', 'w') {|f| f.write(rendered) }
wb = nil
expect{ wb = Roo::Excelx.new('/tmp/xlsx_temp.xlsx') }.to_not raise_error
wb.cell(2,1).should == 'Some value'

这使用renderedgem解析文件,因为axlsx_rails不读取roo
见:
https://github.com/straydogstudio/axlsx_rails/blob/master/spec/axlsx_request_spec.rb#L19-L22

关于ruby-on-rails - AXLSX:解析xlsx文件以进行rspec测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31951323/

10-10 18:45