Как проверить, является ли ответ файлом?
Как проверить, является ли ответ действия контроллера в 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