Sam*_*hih 5 ruby excel rspec ruby-on-rails axlsx
知道如何为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
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
提前致谢!
它似乎rendered是原始响应,因此您可以使用类似axlsx_rails请求规范的内容:
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'
Run Code Online (Sandbox Code Playgroud)
这使用roogem来解析文件,因为Axlsx没有读取xlsx.
请参阅:https: //github.com/straydogstudio/axlsx_rails/blob/master/spec/axlsx_request_spec.rb#L19-L22