下载 CSV 文件并检查 RSpec 测试中的列

download CSV file and check columns in the RSpec test

我想确保我的 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 但它给了我一个空字符串

我添加了 render_views 它在控制器规范中呈现视图。如果您不放置 render_views,视图将不会呈现,这意味着控制器被调用,但在它之后 returns 视图不会呈现。控制器测试将 运行 更快,因为它们不必渲染视图,但您可能会错过视图中的错误。之后我使用 CSV.parse(response.body) 解析我们的响应,然后我可以检查 CSV 内容文件。