0
我想爲我的Rails 5 API服務器設置RSpec測試。服務器使用active_model_serializers (0.10.5)
和JSON API適配器。使用RSpec的活動模型序列化器反序列化無效文檔
從我所知道的,服務器在爲有效的JSON:
{
"data": [{
"id": "1",
"type": "categories",
"attributes": {
"name": "Language"
}
}, {
"id": "2",
"type": "categories",
"attributes": {
"name": "Ruby"
}
}, {
"id": "3",
"type": "categories",
"attributes": {
"name": "HTML"
}
}]
}
這裏是我的設置:
應用程序/控制器/ categories_controller.rb
def index
@categories = Category.all
render json: @categories
end
應用程序/串行/category_serializer.rb
class CategorySerializer < ActiveModel::Serializer
attributes :id, :name
end
規格/請求/ categories_spec.rb
describe 'GET /categories' do
before do
@category1 = FactoryGirl.create(:category)
@category2 = FactoryGirl.create(:category)
get '/categories'
json = ActiveModelSerializers::Deserialization.jsonapi_parse!(response.body)
@category_ids = json.collect { |category| category['id'] }
end
it 'returns all resources in the response body' do
expect(@category_ids).to eq([@category1.id, @category2.id])
end
it 'returns HTTP status ok' do
expect(response).to have_http_status(:ok)
end
end
以下是我得到的錯誤運行bundle exec spec
時:
ActiveModelSerializers::Adapter::JsonApi::Deserialization::InvalidDocument:
Invalid payload (Expected hash): {"data":
[{"id":"55","type":"categories","attributes":{"name":"feed"}},
{"id":"56","type":"categories","attributes":{"name":"bus"}}]}
我缺少的是讓解串器的工作?