下载 CSV 文件并检查 RSpec 测试中的列
Posted
技术标签:
【中文标题】下载 CSV 文件并检查 RSpec 测试中的列【英文标题】:download CSV file and check columns in the RSpec test 【发布时间】:2022-01-08 00:38:08 【问题描述】:我想确保我的 CSV 下载包含正确的列。当我使用 RSpec 测试 CSV 下载时,我无法访问文件内容。如何访问 CSV 文件的内容?
describe TrackingsController do
it 'returns a successful 200 response for csv format' do
signin_user = create(:admin_user)
sign_in(signin_user)
get :index, format: :csv
expect(response).to be_successful
expect(response.headers['Content-Type']).to eq('text/csv; charset=utf-8')
expect(response.request.fullpath).to eq('/api/v1/trackings.csv')
end
end
上述 RSpec 测试已通过,但如何打开 CSV 文件并检查列?
我正在尝试查看 response.body
,但它给了我一个空字符串
【问题讨论】:
【参考方案1】:我添加了render_views
它在控制器规范中呈现视图。如果你不放render_views,视图将不会渲染,这意味着控制器被调用但在它返回后视图不会被渲染。控制器测试将运行得更快,因为它们不必渲染视图,但您可能会错过视图中的错误。之后我使用CSV.parse(response.body)
解析我们的响应,然后我可以检查 CSV 内容文件。
【讨论】:
以上是关于下载 CSV 文件并检查 RSpec 测试中的列的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Capybara 和 RSpec 中测试 CSV 文件下载?
Python:将系列添加到数据框架中,并没有将数据放在正确的列中。
第 1 行错误的 CSV 输入中的列数无效(已检查其他问题)