AXLSX:parsingrspectesting的xlsx文件

任何想法如何编写从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编码的string我不知道如何parsing标题等

=> "PK\u0003\u0004\u0014\u0000\u0000\u0000\b\u0000\u0000\u0000!\xECc8k\xD4\

有没有一种方法,我可以只是testing生成的xlsx文件,就像我会HTML视图?

就像是…

 it "has header Books" do assign(:worksheet, worksheet) render expect(rendered).to have_xpath("(//table)[1]/thead/tr/td", :text => "Books") end 

提前致谢!

它看起来是rendered是原始的响应,所以你可以使用像axlsx_rails请求规格:

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

这使用roo gem来parsing文件,因为Axlsx不会读取xlsx。

请参阅: https : //github.com/straydogstudio/axlsx_rails/blob/master/spec/axlsx_request_spec.rb#L19-L22