Я отправляю запросы на внешний интерфейс, где я строжай свои данные (массив объектов), а затем анализирую их в серверной части.
Когда я запускаю свои спецификации, я получаю ошибку no implicit conversion of Array into String
Как я могу структурировать свои данные в моей спецификации, чтобы они соответствовали тому, что я делаю в веб-интерфейсе?Или есть другой способ, где мне не нужно разбирать / анализировать мои данные для обработки всего этого?
Вот так выглядит моя структура данных внешнего интерфейса:
"categories_and_years": JSON.stringify(
[
{"category_id": 1, "year_ids":[1, 2, 3]},
{"category_id": 2, "year_ids":[2, 3]},
]
)
В моемконтроллер, я проверяю данные, это сначала массив:
def validate_categories_and_years_array
@cats_and_yrs = JSON.parse(params[:categories_and_years])
return unless @cats_and_yrs
if !@cats_and_yrs.is_a?(Array)
render_response(:unprocessable_entity, { description_detailed: "categories_and_years must be an array of objects"})
end
end
В моих спецификациях я задаю свои параметры следующим образом:
context "when all categories and years are valid" do
let(:params) do
{
school_id: school.id,
id: standard_group.id,
categories_and_years: [
{ category_id: category_1.id, year_ids: [ year_1.id ] }
]
}
end
it "adds standards from specific categories and years to the school" do
post :add, params: params, as: :json
expect(school.achievement_standards).to contain_exactly( std_1 )
end
end