Как проверить метод, который получает контроллер по параметру в Синатре - PullRequest
0 голосов
/ 20 января 2020

Мне нужно протестировать этот блок кода, используя RSPE C, но я не знаю, как создать тест controller для входа в блок и проверки ошибки JSON::ParserError.

Код, который мне нужен тест:

    module JsonValidator
      def self.extended controller
        controller.before do
          JSON.parse(@request_payload)
        rescue JSON::ParserError, JSON::NestingError => e 
          response.headers['Content-type'] = 'application/json; charset=utf-8'
          msg = "Json cannot be parsed"
          halt 400, "{\"message\":\"#{msg}\"}"
        end                
      end
    end

Мой тест:

    module Base
    Models = Moneto::Core::Models
    Base = Moneto::Core::Controllers::Base

    RSpec.describe Moneto::Core::Controllers::Base::JsonValidator do

        around(:each) do |example|
            Models::Base::DB.transaction(savepoint: true, rollback: :always) { example.run }
        end

        describe 'JsonValidator' do 
            before(:each) do
                @params = {
                    "client_id":[
                      1
                    ],
                    "products":[{
                        "title":"Sapato roxo",
                        "quantity":1,
                        "value": 01
                      }]
            end

            it 'succes' do
               @params = @params.to_json
                Base::JsonValidator.extended(Moneto::Core::ApiServer)
            end   
        end
    end
end

Мне нужно ввести в блоке:

JSON.parse(@request_payload)
    rescue JSON::ParserError, JSON::NestingError => e 
      response.headers['Content-type'] = 'application/json; charset=utf-8'
      msg = "Json cannot be parsed"
      halt 400, "{\"message\":\"#{msg}\"}"
    end                

и пройти @params до JSON.parse(@request_payload) для теста.

...