Rspec, Как включить params внутри тела - PullRequest
0 голосов
/ 16 февраля 2019

Спецификация Rspec не выполняется в следующем тестовом примере.Может ли кто-нибудь помочь мне с отправкой параметров внутри тела?

Контрольный пример:

  describe 'POST search' do
    it 'renders search' do
      request.headers['Content-Type'] = 'application/json'
      request.headers['Accept'] = 'application/json'

      post :search, body: {name: {query_type: 'match', value: ['xy']} }.to_json

      expect(response.status).to eq(200)
      expect(response.body.include?('TWEEDLE'))
    end
  end

Контроллер:

def search
    page_params = pagination_params

    query_hash = QueryPreprocessor.params_to_query_with_types(JSON.parse(request.body.read).deep_symbolize_keys)
    logger.info "query_hash: #{query_hash}"
    es_query_json = Elastic::QueryBuilder.facility_search_v1(query_hash, page_params).to_json
    logger.info "es query: #{es_query_json}"

    facilities = facility_helper.search es_query_json
    json_response build_facilities_response(facilities)
  rescue ApiError => e
    render json: e.response, status: e.status
  end

и это параметры, которые я хочу включить в тело, которое вызывается в контроллере:

def pagination_params
    page_params = {}
    page_params['size_params'] = params[:size] || 50
    page_params['from_params'] = params[:from] || 0
    page_params['sort_params'] = params[:sort]
    page_params['order_params'] = params[:order]
    page_params
  end

Rspec должен пройти, с параметрами пагинации, включенными в тело.

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете POST JSON с "как:: JSON".

  describe 'POST search' do
    it 'renders search' do
      request.headers['Content-Type'] = 'application/json'
      request.headers['Accept'] = 'application/json'

      post :search, params: {name: {query_type: 'match', value: ['xy']} }, as: :json

      expect(response.status).to eq(200)
      expect(response.body.include?('TWEEDLE'))
    end
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...