我想为后API创建RSpec用例。其中数据(JSON格式+ pdf文件)以表单形式传递。例如
curl --location --request POST 'http://localhost:3000/api/v1/books' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJra...' \
--form 'book="{ \"book\": {
\"info\":{
\"reference_id\": \"43999\"
}
}
}"' \
--form 'book_content=@"/home/bookcontent.pdf"' \
--form 'book_booksummery=@"/home/booksummery.pdf"'
同样的,我也可以从postman创建。2我怎样才能在rspec中创建同样的表单数据,而在params中创建附件呢?3我试过了,但是控制器无法接收params。
it 'updates inquiry' do
post '/api/v1/books', params: book="{ \"book\": {
\"info\":{
\"reference_id\": \"43999\"
}
}
}".merge(book_content: fixture_file_upload('spec/fixtures/files/book_content.pdf', 'application/pdf'))
.merge(book_booksummery: fixture_file_upload('spec/fixtures/files/book_booksummery.pdf', 'application/pdf'))
, headers: headers_data
Rails.logger.info response
expect(response).to have_http_status(201) # giving 422 status error code
expect(json['reference_id']).to eq '43999'
end
1条答案
按热度按时间2sbarzqh1#
下面的方法很有效,只挑选关键项。基本上,你可以坚持使用散列。
我正在使用authenticated_header,您可能会发现这很方便(灵感就在这里)
我猜你的控制器看起来像这样