Я хочу проверить свой board_controller с RSpe c. Я застрял в равной проверке ответа JSON.
Вот просто boards_controller_spec.rb
require "rails_helper"
RSpec.describe Api::V1::BoardsController, type: :request do
context "#index" do
it "must return data" do
get "/api/v1/boards"
expect(response.body).to include_json(
data: [
id: (should be_kind_of Integer),
link: (should be_kind_of String),
],
)
end
end
end
А вот мои boards_controller.rb
, которые имеют только #index
и #show
методы.
module Api::V1
class BoardsController < ApplicationController
def index
@boards = Board.all
render json: @boards
end
def show
@board = Board.find(params[:id])
render json: @board
end
private
def set_board
@board = Board.find(params[:id])
end
def board_params
params.require(:board).permit(:link)
end
end
end
На хосте: Страница 3000 / api / v1 /boards У меня есть ответ JSON:
[
{
"id": 1,
"link": "mzdbQBiKYk",
"created_at": "2020-03-23T21:29:14.335Z",
"updated_at": "2020-03-23T21:29:14.335Z"
},
{
"id": 2,
"link": "ZkbspsYIPz",
"created_at": "2020-03-23T21:29:14.347Z",
"updated_at": "2020-03-23T21:29:14.347Z"
}
]
Поэтому моя цель - проверить, что id является целым числом, а ссылка является строкой, но когда я пытаюсь запустить тест, у меня это ошибка:
Failures:
1) Api::V1::BoardsController#index must return data
Failure/Error: id: (should be_kind_of Integer),
expected #<Api::V1::BoardsController:0x0000561c114a6e28 @_routes=nil, @_request=nil, @_response=nil> to be a kind of Integer
# ./spec/requests/boards_controller_spec.rb:9:in `block (3 levels) in <top (required)>'
Что здесь не так? Доски были созданы с помощью seed (генерируются только случайные ссылки для досок), потому что мне не нужен метод create для этой модели.