Как проверить, является ли ответ файлом?

Как проверить, является ли ответ действия контроллера в Rails файлом? (стойка-тест или капибара)

Должен ли я использовать модульные тесты, чтобы сделать это?

Сценарий прост: мне нужно проверить, совпадают ли экспортированные пользователи из базы данных, содержащиеся в сгенерированном.csv из действия.

1 ответ

Решение

Вам не нужно тестирование в стойке или Капибара, чтобы сделать это. Тестовая инфраструктура по умолчанию - это все, что вам нужно. Просто проверьте, что Content-Type - CSV:

test "returns a CSV file" do
  get :index, format: :csv
  assert_response :success
  assert_equal "text/csv", response.content_type
end

Если вы хотите сделать еще один шаг вперед, вы можете проанализировать возвращенный CSV, чтобы убедиться, что он действителен, и проверить возвращаемые значения:

test "returns a valid CSV file and data" do
  get :index, format: :csv
  assert_response :success
  assert_equal "text/csv", response.content_type

  csv = CSV.parse response.body # Let raise if invalid CSV
  assert csv
  assert_equal 6, csv.size
  assert_equal "Joe Smith", csv[3][4]
end
Другие вопросы по тегам