Мне нужно протестировать этот блок кода, используя 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)
для теста.